home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 24 / AACD 24.iso / AACD / Games / Mattonite / Mattonite.text < prev    next >
Text File  |  2001-07-29  |  86KB  |  2,582 lines

  1. '-> Mattonite by Stefano Regattin
  2. 'i> 2 ottobre 1996 
  3. 'm> 3,8,12,13,14,19,25,27,31 ottobre 1996
  4. 'm> 9 novembre 1996
  5. 'm> 12 novembre 1997 
  6. 'm> 17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 maggio 2000 
  7. 'm> 1,4,5,6,7,8,9,11,13,14,23,26,27,28 giugno 2000 
  8. 'm> 16,17,18,19,23,24 luglio 2000
  9. 'm> 5,12,13,14,15,30 agosto 2000 
  10. 'm> 1,10,11,26 settembre 2000
  11. 'm> 12,15,24,25,26,31 ottobre 2000 
  12. 'm> 2,16,17,21,23 novembre 2000
  13. 'm> 3 dicembre 2000
  14. 'm> 5,7,8,9,10,11,13,14,17,18,22,25,26,27,28 febbraio 2001 
  15. 'm> 1 marzo 2001 
  16. 'm> 15,22,23,26 aprile 2001
  17. 'm> 19,20,22,26,27,29 maggio 2001
  18. 'm> 1,2,3,4,5,9,10,12,25,28 giugno 2001
  19. 'm> 1,2,3,6,7,10,14,15,16,29 luglio 2001 
  20. '----------------------------------------
  21. Set Buffer 20
  22. Degree 
  23. OGGETTI$="MattoniteOggetti.Abk"
  24. SUONI$="MattoniteSuoni.Abk"
  25. PUNTEGGI$="TopHundredScores"
  26. VERO=-1
  27. FALSO=0
  28. ALTEZZAFONT=8
  29. BANCO=65535
  30. IMMAGINIBOING=8
  31. IMMAGINIGUANO=1
  32. IMMAGINIPAPERO=4
  33. IMMAGINIRUBAPALLINA=11
  34. LARGHEZZAPANNELLO=48
  35. MASSIMOBOINGINCAMPO=3
  36. MASSIMOMATTONCINIDARIDISEGNARE=83
  37. MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO=8
  38. MASSIMOPALLINEINCAMPO=5
  39. OGGETTORIGA=0
  40. OGGETTOCENTRODELLABARRA=1
  41. OGGETTOLATIDELLABARRA=OGGETTOCENTRODELLABARRA+1
  42. OGGETTOMATTONCINODIPOTENZIAMENTO=OGGETTOLATIDELLABARRA+1
  43. OGGETTOBOING=OGGETTOMATTONCINODIPOTENZIAMENTO+MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO
  44. OGGETTOPAPERO=249
  45. OGGETTOGUANO=250
  46. OGGETTOPAPEROALIENO=251
  47. OGGETTORUBAPALLINA=252
  48. OGGETTOLASER=253
  49. OGGETTORAGGIOLASER=254
  50. OGGETTOPALLINA=OGGETTOPAPERO-MASSIMOPALLINEINCAMPO
  51. PRIMAPARTITA=VERO
  52. RITARDODELLENTRATAINCAMPODEIBOING=-1000
  53. SEMITONO#=1.05946
  54. SUONICARICATI=VERO
  55. VOCE=1
  56. Dim NOMEDELGIOCATORE$(99),LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(99)
  57. Dim PUNTEGGIODELGIOCATORE$(99)
  58. Dim DELTAXPALLINA#(MASSIMOPALLINEINCAMPO-1)
  59. Dim DELTAYPALLINA#(MASSIMOPALLINEINCAMPO-1)
  60. Dim VELOCITADELLAPALLINA#(MASSIMOPALLINEINCAMPO-1)
  61. Dim XPALLINA#(MASSIMOPALLINEINCAMPO-1),YPALLINA#(MASSIMOPALLINEINCAMPO-1)
  62. Dim BOING(MASSIMOBOINGINCAMPO-1),C0LORE(31),DURATADELLARIGA(2)
  63. Dim DURATADELRIDISEGNODELMATTONCINO(MASSIMOMATTONCINIDARIDISEGNARE-1)
  64. Dim IMMAGINEBOING(IMMAGINIBOING-1),IMMAGINEPAPERO(IMMAGINIPAPERO-1)
  65. Dim IMMAGINEPAPEROALIENO(IMMAGINIPAPERO-1)
  66. Dim IMMAGINERUBAPALLINA(IMMAGINIRUBAPALLINA-1),INGOMBRODELLABARRA(2)
  67. Dim LAPALLINAERIMASTAINCOLLATAALLABARRA(MASSIMOPALLINEINCAMPO-1)
  68. Dim LAPALLINAHACOLPITOLABARRA(MASSIMOPALLINEINCAMPO-1)
  69. Dim LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(MASSIMOPALLINEINCAMPO-1)
  70. Dim MATTONCINO(246),MATTONCINODARIDISEGNARE(MASSIMOMATTONCINIDARIDISEGNARE-1)
  71. Dim MATTONCINODIPOTENZIAMENTO(MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1)
  72. Dim PALLINA(MASSIMOPALLINEINCAMPO-1)
  73. Dim VOCE(3),X0ZONA(246),XBOING(MASSIMOBOINGINCAMPO-1)
  74. Dim XCOLLA(MASSIMOPALLINEINCAMPO-1)
  75. Dim XMATTONCINODIPOTENZIAMENTO(MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1)
  76. Dim Y0ZONA(246),YBOING(MASSIMOBOINGINCAMPO-1),YCOLLA(MASSIMOPALLINEINCAMPO-1)
  77. Dim YMATTONCINODIPOTENZIAMENTO(MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1)
  78. Global VERO,FALSO
  79. Global CENTOGIOCATORI$,OGGETTI$,PERCORSO$,PERCORSODEILIVELLI$
  80. Global PERCORSODELLAGRAFICA$,PERCORSODELLAMUSICA$,PUNTEGGI$,SUONI$
  81. Global SEMITONO#
  82. Global ALTEZZAFONT,BANCO,_BARRABLOCCATA,BOINGINCAMPO,BONUS,C0LLA
  83. Global C0LORIDELLOSCHERMOMENOUNO,DISTANZADELMATTONCINOPIUVICINOALPAPERO
  84. Global DURATADELLARIGA,GRADIPAPEROALIENO,GUANOINCAMPO,GUANOMOLLATO
  85. Global IMMAGINEGUANO,IMMAGINELASER,IMMAGINEPALLINA,IMMAGINEPAPERO
  86. Global IMMAGINEPAPEROALIENO,IMMAGINERAGGIOLASER,IMMAGINERUBAPALLINA
  87. Global IMMAGINIBOING,IMMAGINIGUANO,IMMAGINIPAPERO,IMMAGINERIGADUE
  88. Global IMMAGINERIGATRE,IMMAGINERIGAUNO,IMMAGINIRUBAPALLINA,LARGHEZZAPANNELLO
  89. Global LASER,LIVELLO,LUNGHEZZADELLABARRA,LUNGHEZZADELLABARRACAMBIATA
  90. Global MASSIMOBOINGINCAMPO,MASSIMOMATTONCINIDARIDISEGNARE
  91. Global MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO,MASSIMOPALLINEINCAMPO
  92. Global MATTONCINI,MATTONCINIDIPOTENZIAMENTO,MATTONCINIRIMASTI
  93. Global MATTONCINODATROVAREPERILPAPERO,MATTONCINOPERILPAPERO,OGGETTOBOING
  94. Global OGGETTOCENTRODELLABARRA,OGGETTOGUANO,OGGETTOLASER,OGGETTOLATIDELLABARRA
  95. Global OGGETTOMATTONCINODIPOTENZIAMENTO,OGGETTOPALLINA,OGGETTOPAPERO
  96. Global OGGETTOPAPEROALIENO,OGGETTORAGGIOLASER,OGGETTORIGA,OGGETTORUBAPALLINA
  97. Global PALLINAPRESADALRUBAPALLINA,PALLINASCELTADALRUBAPALLINA,PALLINE
  98. Global PALLINEINCAMPO,_PAPEROALIENO,_PAPEROALIENOINCAMPO,_PAPEROINCAMPO
  99. Global POSIZIONE,PUNTEGGIO,PUNTEGGIOMASSIMO,RAGGIOLASERRIFLESSO
  100. Global RAGGIOLASERSPARATO,RIGA,RIMBALZODELLEPALLINESUIMATTONCINI,RITARDOBOING
  101. Global RITARDOPAPERO,RITARDODELLARIPETIZIONEDELSUONODELLAPALLINARUBATA
  102. Global RITARDODELLENTRATAINCAMPODEIBOING
  103. Global RITARDODELLENTRATAINCAMPODELPAPEROALIENO
  104. Global RITARDODELLENTRATAINCAMPODELRUBAPALLINA,RUBAPALLINACOLPITO
  105. Global SUONICARICATI,TASTO,TASTOGRIGIO,T0GLILARIGA,VOCE,XBARRA,XFINALERIGA
  106. Global XGUANO,XLASER,XPANNELLO,XPAPERO,XPAPEROALIENO,XRIGA,XRUBAPALLINA,YBARRA
  107. Global YGUANO,YLASER,YPAPERO,YPAPEROALIENO,YRUBAPALLINA
  108. Global NOMEDELGIOCATORE$(),LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$()
  109. Global PUNTEGGIODELGIOCATORE$()
  110. Global DELTAXPALLINA#(),DELTAYPALLINA#(),VELOCITADELLAPALLINA#(),XPALLINA#()
  111. Global YPALLINA#()
  112. Global BOING(),C0LORE(),DURATADELLARIGA(),DURATADELRIDISEGNODELMATTONCINO()
  113. Global IMMAGINEBOING(),IMMAGINEPAPERO(),IMMAGINEPAPEROALIENO()
  114. Global IMMAGINERUBAPALLINA(),INGOMBRODELLABARRA()
  115. Global LAPALLINAERIMASTAINCOLLATAALLABARRA(),LAPALLINAHACOLPITOLABARRA()
  116. Global LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(),MATTONCINO()
  117. Global MATTONCINODARIDISEGNARE(),MATTONCINODIPOTENZIAMENTO(),PALLINA(),VOCE()
  118. Global X0ZONA(),XBOING(),XCOLLA(),XMATTONCINODIPOTENZIAMENTO(),YBOING()
  119. Global YCOLLA(),YMATTONCINODIPOTENZIAMENTO(),Y0ZONA()
  120. Proc INDIVIDUALAPOSIZIONEDELPROGRAMMA
  121. Proc IMPOSTAIPERCORSIDEIFILE
  122. Proc IMPOSTALOSCHERMO
  123. Proc CARICAGLIOGGETTI
  124. Proc IMPOSTAGLIOGGETTI
  125. Proc IMPOSTAICOLORI
  126. Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1]
  127. Proc TROVAILFONTDATA70
  128. Proc DISSOLVENZADEICOLORI[$FFF,1,1]
  129. Hide 
  130. Proc IMPOSTALARCOBALENO
  131. If SUONICARICATI=VERO Then Proc CARICAISUONI
  132. Proc CARICAILLIVELLO
  133. Proc DABANCOAVARIABILI
  134. Proc METTIILPANNELLO
  135. Proc CREALEIMMAGINIPERLERIGHE
  136. Proc IMPOSTALEZONEDEIMATTONCINI
  137. Proc METTIECONTAIMATTONCINI
  138. Proc IMPOSTALINGOMBRODELLABARRA
  139. Proc CARICAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  140. Proc IMPOSTALADURATADELLERIGHE
  141. Proc DISSOLVENZADEICOLORI[$FFF,1,2]
  142. Proc IMPOSTAILAMPEGGI
  143. Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1]
  144. Repeat 
  145.  Proc MOSTRAICREDITI
  146.  Proc MOSTRAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  147.  TESTOINTRODUTTIVO$="Press left mouse button to play."+Chr$(10)
  148.  TESTOINTRODUTTIVO$=TESTOINTRODUTTIVO$+"Press right mouse button to exit."
  149.  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOINTRODUTTIVO$,20,21,1,500]
  150.  If TASTO=-1
  151.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  152.   C0LLA=FALSO
  153.   DISTANZADELMATTONCINOPIUVICINOALPAPERO=1000
  154.   DURATADELLARIGA=-1
  155.   INIZIODELLIVELLO=VERO
  156.   LASER=0
  157.   LIVELLO=0
  158.   LUNGHEZZADELLABARRA=1
  159.   LUNGHEZZADELLABARRACAMBIATA=LUNGHEZZADELLABARRA
  160.   PALLINASCELTATADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
  161.   PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
  162.   PALLINE=5
  163.   PALLINEINCAMPO=1
  164.   _PAPEROINCAMPO=FALSO
  165.   PUNTEGGIO=0
  166.   RIGA=0
  167.   RIMBALZODELLEPALLINESUIMATTONCINI=VERO
  168.   XBARRA=X Screen(X Mouse)
  169.   YBARRA=247
  170.   If PRIMAPARTITA=FALSO or LIVELLO>0
  171.    Proc CANCELLAIMATTONCINI
  172.    Proc CARICAILLIVELLO
  173.    Proc DABANCOAVARIABILI
  174.    Proc METTIECONTAIMATTONCINI
  175.   Else 
  176.    PRIMAPARTITA=FALSO
  177.   End If 
  178.   Repeat 
  179.    Proc IMPOSTAILRIMBALZODELLEPALLINE
  180.    Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELPAPEROALIENO
  181.    Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELRUBAPALLINA
  182.    Proc AGGIORNAILPANNELLO
  183.    If INIZIODELLIVELLO=VERO
  184.     TESTOINIZIOGIOCO$="Get ready for level"+Str$(LIVELLO)+"!"+Chr$(10)
  185.     TESTOINIZIOGIOCO$=TESTOINIZIOGIOCO$+"Press a (mouse) key to begin..."
  186.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1]
  187.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOINIZIOGIOCO$,22,20,1,500]
  188.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  189.     Proc IMPOSTAIBOING
  190.     If SUONICARICATI=VERO
  191.      Sam Play VOCE,1 : Proc VOCESEGUENTE
  192.     Else 
  193.      Bell 20
  194.     End If 
  195.     INIZIODELLIVELLO=FALSO
  196.    End If 
  197.    For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  198.     If PALLINA<PALLINEINCAMPO
  199.      PALLINA(PALLINA)=VERO
  200.      XPALLINA#(PALLINA)=XBARRA+PALLINA*7-14
  201.      YPALLINA#(PALLINA)=YBARRA-3
  202.     Else 
  203.      PALLINA(PALLINA)=FALSO
  204.      Proc CANCELLALAPALLINA[PALLINA]
  205.     End If 
  206.    Next PALLINA
  207.    Repeat 
  208.     TASTOCLICCATODELTOPO=Mouse Click
  209.     XBARRA=X Screen(X Mouse)
  210.     Proc MOSTRALABARRA
  211.     Proc CAMBIALALUNGHEZZADELLABARRA
  212.     Proc LIMITAIMOVIMENTIDELLABARRA
  213.     For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  214.      If PALLINA(PALLINA)=VERO
  215.       XPALLINA#(PALLINA)=XBARRA+PALLINA*7-14
  216.       YPALLINA#(PALLINA)=YBARRA-3
  217.       Bob OGGETTOPALLINA+PALLINA,Int(XPALLINA#(PALLINA)),Int(YPALLINA#(PALLINA)),IMMAGINEPALLINA
  218.      End If 
  219.     Next PALLINA
  220.     Proc MOSTRAILLASER
  221.     If T0GLILARIGA>0
  222.      If XRIGA>0
  223.       Dec XRIGA
  224.      End If 
  225.      Proc MOSTRALARIGA[T0GLILARIGA]
  226.     Else 
  227.      If RIGA>0
  228.       If XRIGA<XFINALERIGA
  229.        Inc XRIGA
  230.        Proc MOSTRALARIGA[RIGA]
  231.       End If 
  232.      End If 
  233.     End If 
  234.     Proc MATTONCINIDIPOTENZIAMENTO[0,0]
  235.     Proc BOINGINCAMPO
  236.     If _PAPEROINCAMPO=VERO
  237.      Proc _PAPEROINCAMPO
  238.     End If 
  239.     If RITARDODELLENTRATAINCAMPODELPAPEROALIENO=0
  240.      Proc _PAPEROALIENOINCAMPO
  241.      Proc MOLLAILGUANO
  242.     Else 
  243.      Dec RITARDODELLENTRATAINCAMPODELPAPEROALIENO
  244.     End If 
  245.     If RITARDODELLENTRATAINCAMPODELRUBAPALLINA=1
  246.      ENTRATAINCAMPODELRUBAPALLINA=Rnd(2)>1
  247.     End If 
  248.     If RITARDODELLENTRATAINCAMPODELRUBAPALLINA=0
  249.      If ENTRATAINCAMPODELRUBAPALLINA=VERO
  250.       Proc RUBAPALLINAINCAMPO
  251.      End If 
  252.     Else 
  253.      Dec RITARDODELLENTRATAINCAMPODELRUBAPALLINA
  254.     End If 
  255.     Bob Update 
  256.     TASTOPREMUTO$=Lower$(Inkey$)
  257.     TASTOGRIGIO=Key Shift
  258.     TASTOSCANSITO=Scancode
  259.     Exit If TASTOPREMUTO$=Chr$(27)
  260.     If TASTOPREMUTO$="p"
  261.      Proc METTIILGIOCOINPAUSA
  262.     End If 
  263.     If TASTOGRIGIO=4
  264.      If TASTOSCANSITO=80 : Rem F1 key 
  265.       Add LUNGHEZZADELLABARRACAMBIATA,1,0 To 2
  266.      Else If TASTOSCANSITO=81 : Rem F2 key 
  267.       Add PALLINEINCAMPO,1,1 To 5
  268.       For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  269.        If PALLINA<PALLINEINCAMPO
  270.         PALLINA(PALLINA)=VERO
  271.        Else 
  272.         PALLINA(PALLINA)=FALSO
  273.         Proc CANCELLALAPALLINA[PALLINA]
  274.        End If 
  275.       Next PALLINA
  276.      Else If TASTOSCANSITO=82 : Rem F3 key 
  277.       If LASER=-1
  278.        LASER=1
  279.       Else If LASER=1
  280.        LASER=2
  281.       Else If LASER=2
  282.        LASER=3
  283.       Else If LASER=3
  284.        LASER=0
  285.       End If 
  286.      Else If TASTOSCANSITO=83 : Rem F4 key 
  287.       If RIGA>0 and T0GLILARIGA=0
  288.        T0GLILARIGA=RIGA
  289.       End If 
  290.       Add RIGA,1,0 To 3
  291.      Else If TASTOPREMUTO$=" "
  292.       Proc MATTONCINIDIPOTENZIAMENTO[-Rnd(18)-1,0]
  293.      End If 
  294.     End If 
  295.    Until TASTOCLICCATODELTOPO>0
  296.    For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  297.     If PALLINA<PALLINEINCAMPO
  298.      PALLINA(PALLINA)=VERO
  299.      VELOCITADELLAPALLINA#(PALLINA)=1
  300.      D1REZIONEXPALLINA=Rnd(1)
  301.      If D1REZIONEXPALLINA=1
  302.       DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)
  303.      Else 
  304.       DELTAXPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
  305.      End If 
  306.      DELTAYPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
  307.     Else 
  308.      PALLINA(PALLINA)=FALSO
  309.      Proc CANCELLALAPALLINA[PALLINA]
  310.     End If 
  311.    Next PALLINA
  312.    Repeat 
  313.     TASTOCLICCATODELTOPO=Mouse Click
  314.     If TASTOCLICCATODELTOPO=1
  315.      For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  316.       LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=FALSO
  317.      Next PALLINA
  318.     Else If TASTOCLICCATODELTOPO=2
  319.      Proc HAISPARATOILRAGGIOLASER
  320.     End If 
  321.     If _BARRABLOCCATA>0
  322.      If _BARRABLOCCATA=1
  323.       X Mouse=X Hard(XBARRA)
  324.      End If 
  325.      Dec _BARRABLOCCATA
  326.     Else 
  327.      XBARRA=X Screen(X Mouse)
  328.     End If 
  329.     Proc MOSTRALABARRA
  330.     Proc CAMBIALALUNGHEZZADELLABARRA
  331.     Proc LIMITAIMOVIMENTIDELLABARRA
  332.     For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  333.      If PALLINA(PALLINA)=VERO
  334.       If LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=VERO
  335.        XPALLINA#(PALLINA)=XBARRA-XCOLLA(PALLINA)
  336.        YPALLINA#(PALLINA)=YBARRA-YCOLLA(PALLINA)
  337.       Else 
  338.        XPALLINA#(PALLINA)=XPALLINA#(PALLINA)+DELTAXPALLINA#(PALLINA)
  339.        YPALLINA#(PALLINA)=YPALLINA#(PALLINA)+DELTAYPALLINA#(PALLINA)
  340.        If TILTPALLINA=VERO
  341.         XPALLINA#(PALLINA)=XPALLINA#(PALLINA)+XTILTPALLINA
  342.         YPALLINA#(PALLINA)=YPALLINA#(PALLINA)+YTILTPALLINA
  343.        End If 
  344.        If XPALLINA#(PALLINA)>XPANNELLO-1-3
  345.         XPALLINA#(PALLINA)=XPANNELLO-1-3
  346.         DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
  347.         If SUONICARICATI=VERO
  348.          Sam Play VOCE,2,8363*2 : Proc VOCESEGUENTE
  349.         Else 
  350.          Boom 
  351.         End If 
  352.        Else If XPALLINA#(PALLINA)<3
  353.         XPALLINA#(PALLINA)=3
  354.         DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
  355.         If SUONICARICATI=VERO
  356.          Sam Play VOCE,2,8363*2 : Proc VOCESEGUENTE
  357.         Else 
  358.          Boom 
  359.         End If 
  360.        Else If YPALLINA#(PALLINA)<3
  361.         YPALLINA#(PALLINA)=3
  362.         DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  363.         If SUONICARICATI=VERO
  364.          Sam Play VOCE,2,8363*2 : Proc VOCESEGUENTE
  365.         Else 
  366.          Boom 
  367.         End If 
  368.        End If 
  369.        If TILTPALLINA=VERO
  370.         Add XTILTPALLINA,-Sgn(XTILTPALLINA)
  371.         If XTILTPALLINA>0
  372.          XTILTPALLINA=Max(XTILTPALLINA,0)
  373.         Else If XTILTPALLINA<0
  374.          XTILTPALLINA=Min(XTILTPALLINA,0)
  375.         End If 
  376.         Add YTILTPALLINA,-Sgn(YTILTPALLINA)
  377.         If YTILTPALLINA>0
  378.          YTILTPALLINA=Max(YTILTPALLINA,0)
  379.         Else If YTILTPALLINA<0
  380.          YTILTPALLINA=Min(YTILTPALLINA,0)
  381.         End If 
  382.         Screen Display 0,128+XTILTPALLINA,44+YTILTPALLINA,320,256
  383.         If XTILTPALLINA=0 and YTILTPALLINA=0
  384.          TILTPALLINA=FALSO
  385.         End If 
  386.        Else 
  387.         If TASTOPREMUTO$=" "
  388.          XTILTPALLINA=Rnd(32)-16 : YTILTPALLINA=Rnd(32)-16 : TILTPALLINA=VERO
  389.         End If 
  390.        End If 
  391.       End If 
  392.       Bob OGGETTOPALLINA+PALLINA,Int(XPALLINA#(PALLINA)),Int(YPALLINA#(PALLINA)),IMMAGINEPALLINA
  393.       If LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=FALSO
  394.        Proc MATTONCINOCOLPITODALLAPALLINA[PALLINA]
  395.        Proc LAPALLINAHACOLPITOLABARRA[PALLINA]
  396.        Proc LAPALLINAHACOLPITOLARIGA[PALLINA]
  397.        Proc LAPALLINAEUSCITADALCAMPODIGIOCO[PALLINA]
  398.       End If 
  399.      End If 
  400.     Next PALLINA
  401.     Exit If TASTOPREMUTO$=Chr$(27)
  402.     TASTOPREMUTO$=Lower$(Inkey$)
  403.     Exit If TASTOPREMUTO$=Chr$(27)
  404.     If TASTOPREMUTO$="p"
  405.      Proc METTIILGIOCOINPAUSA
  406.     End If 
  407.     Proc MOSTRAILLASER
  408.     Proc MOSTRAILRAGGIOLASER
  409.     TASTOGRIGIO=Key Shift
  410.     SHIFTSINISTRO=Btst(0,TASTOGRIGIO)
  411.     SHIFTDESTRO=Btst(1,TASTOGRIGIO)
  412.     TASTOMAIUSCOLE=Btst(2,TASTOGRIGIO)
  413.     TASTISHIFTPREMUTI=SHIFTSINISTRO or SHIFTDESTRO or TASTOMAIUSCOLE
  414.     If TASTISHIFTPREMUTI=FALSO
  415.      Proc MATTONCINOCOLPITODALRAGGIOLASER
  416.     End If 
  417.     Proc LABARRAESTATACOLPITADALRAGGIOLASERRIFLESSO
  418.     If T0GLILARIGA>0
  419.      If XRIGA>0
  420.       Dec XRIGA : Proc MOSTRALARIGA[T0GLILARIGA]
  421.      Else 
  422.       Proc T0GLILARIGA : DURATADELLARIGA=-1
  423.      End If 
  424.     Else 
  425.      If RIGA>0
  426.       If XRIGA<XFINALERIGA
  427.        Inc XRIGA : Proc MOSTRALARIGA[RIGA]
  428.       Else 
  429.        If DURATADELLARIGA=-1
  430.         DURATADELLARIGA=DURATADELLARIGA(RIGA-1)
  431.        Else If DURATADELLARIGA=0
  432.         T0GLILARIGA=RIGA : RIGA=0
  433.        Else 
  434.         Dec DURATADELLARIGA
  435.        End If 
  436.       End If 
  437.      End If 
  438.     End If 
  439.     Proc MATTONCINIDIPOTENZIAMENTO[0,0]
  440.     Proc BOINGINCAMPO
  441.     If _PAPEROINCAMPO=VERO
  442.      Proc _PAPEROINCAMPO
  443.     End If 
  444.     If RITARDODELLENTRATAINCAMPODELPAPEROALIENO=0
  445.      Proc _PAPEROALIENOINCAMPO
  446.      Proc MOLLAILGUANO
  447.     Else 
  448.      Dec RITARDODELLENTRATAINCAMPODELPAPEROALIENO
  449.     End If 
  450.     If RITARDODELLENTRATAINCAMPODELRUBAPALLINA=1
  451.      ENTRATAINCAMPODELRUBAPALLINA=Rnd(2)>1
  452.     End If 
  453.     If RITARDODELLENTRATAINCAMPODELRUBAPALLINA=0
  454.      If ENTRATAINCAMPODELRUBAPALLINA=VERO
  455.       Proc RUBAPALLINAINCAMPO
  456.      End If 
  457.     Else 
  458.      Dec RITARDODELLENTRATAINCAMPODELRUBAPALLINA
  459.     End If 
  460.     Bob Update 
  461.     For MATTONCINODARIDISEGNARE=0 To MASSIMOMATTONCINIDARIDISEGNARE-1
  462.      If DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)>0
  463.       MATTONCINO=MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)
  464.       If MATTONCINO>0
  465.        X0MATTONCINO=X0ZONA(MATTONCINO-1)
  466.        Y0MATTONCINO=Y0ZONA(MATTONCINO-1)
  467.        TIPODIMATTONCINO=MATTONCINO(MATTONCINO-1)
  468.        If TIPODIMATTONCINO=0
  469.         Ink 0 : Bar X0MATTONCINO,Y0MATTONCINO To X0MATTONCINO+19,Y0MATTONCINO+9
  470.        Else 
  471.         Paste Bob X0MATTONCINO,Y0MATTONCINO,82+TIPODIMATTONCINO
  472.        End If 
  473.       End If 
  474.       Dec DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)
  475.      End If 
  476.     Next MATTONCINODARIDISEGNARE
  477.     If BONUS>0
  478.      If RITARDODELDECREMENTODELBONUS=9
  479.       RITARDODELDECREMENTODELBONUS=0 : Dec BONUS : Proc MOSTRAILBONUS[FALSO]
  480.      Else 
  481.       Inc RITARDODELDECREMENTODELBONUS
  482.      End If 
  483.     End If 
  484.     Exit If MATTONCINI=0
  485.    Until PALLINEINCAMPO=0
  486.    Proc CANCELLALABARRA
  487.    Proc CANCELLALEPALLINE
  488.    Proc T0GLIILLASER
  489.    Proc CANCELLAILRAGGIOLASER
  490.    Proc CANCELLAIMATTONCINIDIPOTENZIAMENTO
  491.    Proc CANCELLAILRUBAPALLINA
  492.    Proc CANCELLAILPAPERO : _PAPEROINCAMPO=FALSO
  493.    Proc CANCELLAILPAPEROALIENO
  494.    Proc CANCELLAILGUANO
  495.    Proc CANCELLAIBOING
  496.    Proc CANCELLALARIGA
  497.    Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1]
  498.    Exit If TASTOPREMUTO$=Chr$(27)
  499.    If MATTONCINI=0
  500.     Proc AGGIUNGIALPUNTEGGIOILBONUS
  501.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  502.     Proc AGGIORNAILPANNELLO
  503.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1]
  504.     Proc AGGIUNGIALPUNTEGGIOILBONUSPERIMATTONCINIRIMASTI
  505.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  506.     Proc AGGIORNAILPANNELLO
  507.     Inc LIVELLO
  508.     INIZIODELLIVELLO=VERO
  509.    End If 
  510.    If PALLINEINCAMPO>0
  511.     Proc CANCELLAIMATTONCINI
  512.     Proc CARICAILLIVELLO
  513.     Exit If LIVELLO<0
  514.     Proc DABANCOAVARIABILI
  515.     Proc METTIECONTAIMATTONCINI
  516.    Else 
  517.     Proc CANCELLALARIGA
  518.     C0LLA=FALSO
  519.     RIMBALZODELLEPALLINESUIMATTONCINI=VERO
  520.     If LASER>0
  521.      Dec LASER
  522.     End If 
  523.     Dec PALLINE : PALLINEINCAMPO=1
  524.     If SUONICARICATI=VERO
  525.      Sam Play VOCE,5 : Proc VOCESEGUENTE
  526.     Else 
  527.      Boom 
  528.     End If 
  529.    End If 
  530.   Until PALLINE=0
  531.   If TASTOPREMUTO$<>Chr$(27)
  532.    Proc AGGIUNGIALPUNTEGGIOILBONUSPERLEPALLINERIMASTEAFINEGIOCO
  533.    Proc FAIINSERIREALGIOCATOREILSUOPUNTEGGIO
  534.    Proc SALVAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  535.    Proc CARICAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  536.   End If 
  537.   GREETING$="The game is finished."+Chr$(10)
  538.   GREETING$=GREETING$+"I hope you have enjoyed."+Chr$(10)
  539.   GREETING$=GREETING$+"Bye bye!"
  540.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[GREETING$,20,22,1,1000]
  541.  End If 
  542. Until TASTO=-2
  543. Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  544. Flash Off : Proc DISSOLVENZADEICOLORI[0,1,1]
  545. Proc T0GLIIMATTONCINI
  546. Proc T0GLIILPANNELLO
  547. Proc T0GLILARCOBALENO
  548. Show : Rainbow Del 0 : Screen Close 0 : Erase All : End 
  549. Procedure AGGIORNAILPANNELLO
  550.  ' Update the panel 
  551.  Proc MOSTRAILPUNTEGGIO[VERO]
  552.  Proc MOSTRAILPUNTEGGIOMASSIMO[VERO]
  553.  Proc MOSTRALEPALLINERIMASTE
  554.  Proc MOSTRAILLIVELLO
  555.  Proc MOSTRAILBONUS[VERO]
  556. End Proc
  557. Procedure AGGIUNGIALPUNTEGGIOILBONUS
  558.  ' Add the bonus to the score 
  559.  If BONUS>0
  560.   BONUS$="I am going to add the bonus points..."+Chr$(10)
  561.   BONUS$=BONUS$+"...to your game points."+Chr$(10)
  562.   BONUS$=BONUS$+"Wait for a moment, please..."
  563.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,22,20,1,-1]
  564.   Repeat 
  565.    TASTOPREMUTO$=Lower$(Inkey$)
  566.    If TASTOPREMUTO$="p"
  567.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  568.     Proc METTIILGIOCOINPAUSA
  569.    End If 
  570.    Dec BONUS : Proc MOSTRAILBONUS[FALSO]
  571.    Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
  572.   Until BONUS=0
  573.  Else 
  574.   TASTOPREMUTO$=Lower$(Inkey$)
  575.   If TASTOPREMUTO$="p"
  576.    Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  577.    Proc METTIILGIOCOINPAUSA
  578.   End If 
  579.   BONUS$="There are no bonus points..."+Chr$(10)
  580.   BONUS$=BONUS$+"...to add to your game points."+Chr$(10)
  581.   BONUS$=BONUS$+"I am sorry..."+Chr$(10)+"...I wish a better luck for the next level."+Chr$(10)
  582.   BONUS$=BONUS$+"Press a (mouse) key to continue..."
  583.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,21,20,1,1000]
  584.  End If 
  585. End Proc
  586. Procedure AGGIUNGIALPUNTEGGIOILBONUSPERIMATTONCINIRIMASTI
  587.  ' Add 2 points to the score for every brick left 
  588.  If MATTONCINIRIMASTI>0
  589.   BONUS$="I am going to add the bricks left bonus points..."+Chr$(10)
  590.   BONUS$=BONUS$+"...to your game points,"+Chr$(10)
  591.   BONUS$=BONUS$+"adding two points for each brick left."+Chr$(10)
  592.   BONUS$=BONUS$+"There are"+Str$(MATTONCINIRIMASTI)+" bricks left..."+Chr$(10)
  593.   BONUS$=BONUS$+"...wait for a moment, please..."
  594.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,22,20,1,-1]
  595.   Repeat 
  596.    TASTOPREMUTO$=Lower$(Inkey$)
  597.    If TASTOPREMUTO$="p"
  598.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  599.     Proc METTIILGIOCOINPAUSA
  600.    End If 
  601.    Dec MATTONCINIRIMASTI
  602.    Add PUNTEGGIO,2 : Proc MOSTRAILPUNTEGGIO[VERO]
  603.   Until MATTONCINIRIMASTI=0
  604.  Else 
  605.   TASTOPREMUTO$=Lower$(Inkey$)
  606.   If TASTOPREMUTO$="p"
  607.    Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  608.    Proc METTIILGIOCOINPAUSA
  609.   End If 
  610.   BONUS$="There are no bricks left bonus points..."+Chr$(10)
  611.   BONUS$=BONUS$+"...to add to your game points."+Chr$(10)
  612.   BONUS$=BONUS$+"I am sorry..."+Chr$(10)+"...I wish a better luck for the next level."+Chr$(10)
  613.   BONUS$=BONUS$+"Press a (mouse) key to continue..."
  614.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,21,20,1,1000]
  615.  End If 
  616. End Proc
  617. Procedure AGGIUNGIALPUNTEGGIOILBONUSPERLEPALLINERIMASTEAFINEGIOCO
  618.  ' Add 500 points to the score for every ball left at the end of the game 
  619.  If PALLINE>0
  620.   BONUS$="I am going to add the ball left bonus points..."+Chr$(10)
  621.   BONUS$=BONUS$+"...to your game points,"+Chr$(10)
  622.   BONUS$=BONUS$+"adding 500 points for each ball left."+Chr$(10)
  623.   BONUS$=BONUS$+"There are"+Str$(PALLINE)+" ball(s) left..."+Chr$(10)
  624.   BONUS$=BONUS$+"...wait for a moment, please..."
  625.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,22,20,1,-1]
  626.   Repeat 
  627.    TASTOPREMUTO$=Lower$(Inkey$)
  628.    If TASTOPREMUTO$="p"
  629.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  630.     Proc METTIILGIOCOINPAUSA
  631.    End If 
  632.    Dec PALLINE : Proc MOSTRALEPALLINERIMASTE
  633.    Add PUNTEGGIO,500 : Proc MOSTRAILPUNTEGGIO[VERO]
  634.    Sam Play VOCE,2 : Proc VOCESEGUENTE
  635.    _ASPETTA[50]
  636.   Until PALLINE=0
  637.  Else 
  638.   BONUS$="There are no balls left bonus points..."+Chr$(10)
  639.   BONUS$=BONUS$+"...to add to your game points."+Chr$(10)
  640.   BONUS$=BONUS$+"I am sorry..."+Chr$(10)+"...I wish a better luck for the next game."+Chr$(10)
  641.   BONUS$=BONUS$+"Press a (mouse) key to continue..."
  642.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,21,20,1,1000]
  643.  End If 
  644. End Proc
  645. Procedure _ASPETTA[TEMP0DAASPETTARE]
  646.  ' Wait for a (mouse or grey) key pressed:
  647.  ' if time to wait (TEMP0DAASPETTARE) is less than zero exit immediately; 
  648.  ' if time to wait is equal to zero wait forever; 
  649.  ' if time to wait is grater than zero wait the specified time. 
  650.  TASTO=0
  651.  Timer=0
  652.  Repeat 
  653.   TASTOPREMUTO$=Inkey$
  654.   TASTOGRIGIO=Key Shift
  655.   TASTOPREMUTODELTOPO=Mouse Key
  656.   If TASTOGRIGIO>0 and TASTOGRIGIO<>Key Shift
  657.    Add TASTO,TASTOGRIGIO*256 : Exit 
  658.   End If 
  659.   If TASTOPREMUTODELTOPO>0 Then TASTO=-TASTOPREMUTODELTOPO : Exit 
  660.   If TASTOPREMUTO$<>"" Then TASTO=Asc(TASTOPREMUTO$) : Exit 
  661.   If TEMP0DAASPETTARE>0 Then TEMP0TRASCORSO=Timer
  662.   If TEMP0DAASPETTARE<0 Then Pop Proc
  663.  Until TEMP0TRASCORSO>TEMP0DAASPETTARE
  664. End Proc
  665. Procedure BOINGINCAMPO
  666.  ' Manage the boings
  667.  For BOING=0 To MASSIMOBOINGINCAMPO-1
  668.   If BOING(BOING)>0
  669.    If RITARDOBOING=0
  670.     Bob OGGETTOBOING+BOING,XBOING(BOING),YBOING(BOING),IMMAGINEBOING(BOING(BOING)-1)
  671.     Add XBOING(BOING),Rnd(4)-2
  672.     Proc LIMITI[XBOING(BOING),0,XFINALERIGA] : XBOING(BOING)=Param
  673.     Inc YBOING(BOING)
  674.     Add BOING(BOING),1,1 To 8
  675.    End If 
  676.    Proc ILBOINGESTATOCOLPITO[BOING]
  677.    Proc ILBOINGEUSCITODALCAMPODIGIOCO[BOING]
  678.   Else If BOING(BOING)=0
  679.    XBOING(BOING)=Rnd(XFINALERIGA) : YBOING(BOING)=-9 : BOING(BOING)=Rnd(7)+1
  680.    If SUONICARICATI=VERO
  681.     Sam Play VOCE,10 : Proc VOCESEGUENTE
  682.    Else 
  683.     Bell 60
  684.    End If 
  685.   Else If BOING(BOING)<0
  686.    If BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING
  687.     Proc CANCELLAILBOING[BOING] : Inc BOING(BOING)
  688.    Else 
  689.     Inc BOING(BOING)
  690.    End If 
  691.   End If 
  692.  Next BOING
  693.  Add RITARDOBOING,1,0 To 3
  694. End Proc
  695. Procedure CAMBIALALUNGHEZZADELLABARRA
  696.  ' Change the bar size
  697.  If LUNGHEZZADELLABARRACAMBIATA<>LUNGHEZZADELLABARRA
  698.   If LUNGHEZZADELLABARRA=0
  699.    If LUNGHEZZADELLABARRACAMBIATA=1
  700.     Gosub LUNGHEZZADAZEROAUNO
  701.    End If 
  702.    If LUNGHEZZADELLABARRACAMBIATA=2
  703.     Gosub LUNGHEZZADAZEROAUNO
  704.     Gosub LUNGHEZZADAUNOADUE
  705.    End If 
  706.   Else If LUNGHEZZADELLABARRA=1
  707.    If LUNGHEZZADELLABARRACAMBIATA=0
  708.     Gosub LUNGHEZZADAUNOAZERO
  709.    End If 
  710.    If LUNGHEZZADELLABARRACAMBIATA=2
  711.     Gosub LUNGHEZZADAUNOADUE
  712.    End If 
  713.   Else If LUNGHEZZADELLABARRA=2
  714.    If LUNGHEZZADELLABARRACAMBIATA=0
  715.     Gosub LUNGHEZZADADUEAUNO
  716.     Gosub LUNGHEZZADAUNOAZERO
  717.    End If 
  718.    If LUNGHEZZADELLABARRACAMBIATA=1
  719.     Gosub LUNGHEZZADADUEAUNO
  720.    End If 
  721.   End If 
  722.  End If 
  723.  LUNGHEZZADELLABARRA=LUNGHEZZADELLABARRACAMBIATA
  724.  Pop Proc
  725.  LUNGHEZZADAZEROAUNO:
  726.  ' From small to medium bar 
  727.  For OGGETTO=45 To 41 Step -1
  728.   Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,OGGETTO
  729.   Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,OGGETTO+5
  730.   Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
  731.   Bob Update 
  732.  Next OGGETTO
  733.  Return 
  734.  LUNGHEZZADAUNOADUE:
  735.  ' From medium to large bar 
  736.  For OGGETTO=13 To 26
  737.   Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,OGGETTO
  738.   Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,OGGETTO+14
  739.   Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
  740.   Bob Update 
  741.  Next OGGETTO
  742.  Return 
  743.  LUNGHEZZADADUEAUNO:
  744.  ' From large to medium bar 
  745.  For OGGETTO=26 To 13 Step -1
  746.   Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,OGGETTO
  747.   Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,OGGETTO+14
  748.   Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
  749.   Bob Update 
  750.  Next OGGETTO
  751.  Return 
  752.  LUNGHEZZADAUNOAZERO:
  753.  ' From medium to small bar 
  754.  For OGGETTO=41 To 45
  755.   Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,OGGETTO
  756.   Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,OGGETTO+5
  757.   Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
  758.   Bob Update 
  759.  Next OGGETTO
  760.  Return 
  761. End Proc
  762. Procedure CANCELLAIBOING
  763.  ' Turn off all the boings
  764.  For BOING=0 To MASSIMOBOINGINCAMPO-1
  765.   Bob Off OGGETTOBOING+BOING
  766.  Next BOING
  767.  Bob Update 
  768. End Proc
  769. Procedure CANCELLAILBOING[BOING]
  770.  ' Turn off the specified boing 
  771.  Bob Off OGGETTOBOING+BOING
  772.  Bob Update 
  773. End Proc
  774. Procedure CANCELLAILGUANO
  775.  Bob Off OGGETTOGUANO
  776.  Bob Update 
  777.  GUANOMOLLATO=FALSO
  778.  GUANOINCAMPO=FALSO
  779. End Proc
  780. Procedure CANCELLAILMATTONCINODIPOTENZIAMENTO[MATTONCINODIPOTENZIAMENTO]
  781.  ' Turn off the specified bonus brick 
  782.  Bob Off OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO
  783.  Bob Update 
  784.  MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=0
  785. End Proc
  786. Procedure CANCELLAILPAPERO
  787.  ' Turn off the duck
  788.  Bob Off OGGETTOPAPERO
  789.  Bob Update 
  790. End Proc
  791. Procedure CANCELLAILPAPEROALIENO
  792.  ' Turn off the alien duck
  793.  Bob Off OGGETTOPAPEROALIENO
  794.  Bob Update 
  795.  _PAPEROALIENO=0
  796.  _PAPEROALIENOINCAMPO=FALSO
  797. End Proc
  798. Procedure CANCELLAILRAGGIOLASER
  799.  ' Turn off the laser ray 
  800.  Bob Off OGGETTORAGGIOLASER
  801.  Bob Update 
  802.  RAGGIOLASERSPARATO=FALSO
  803. End Proc
  804. Procedure CANCELLAILRUBAPALLINA
  805.  ' Turn off the ballthief 
  806.  Bob Off OGGETTORUBAPALLINA
  807.  Bob Update 
  808.  Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELRUBAPALLINA
  809.  PALLINASCELTADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
  810. End Proc
  811. Procedure CANCELLAIMATTONCINI
  812.  ' Clear the bricks area  
  813.  Cls 0,0,0 To XPANNELLO,Screen Height
  814. End Proc
  815. Procedure CANCELLAIMATTONCINIDIPOTENZIAMENTO
  816.  ' Turn off all the bonus bricks
  817.  For MATTONCINODIPOTENZIAMENTO=0 To MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1
  818.   If MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)>0
  819.    Bob Off OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO
  820.   End If 
  821.   MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=0
  822.  Next MATTONCINODIPOTENZIAMENTO
  823.  Bob Update 
  824. End Proc
  825. Procedure CANCELLALABARRA
  826.  ' Turn off the bar 
  827.  Bob Off OGGETTOCENTRODELLABARRA
  828.  Bob Off OGGETTOLATIDELLABARRA
  829.  Bob Update 
  830. End Proc
  831. Procedure CANCELLALAPALLINA[PALLINA]
  832.  ' Turn off the specified ball  
  833.  Bob Off OGGETTOPALLINA+PALLINA
  834.  Bob Update 
  835. End Proc
  836. Procedure CANCELLALARIGA
  837.  ' Turn off the row 
  838.  If RIGA>0
  839.   T0GLILARIGA=RIGA : RIGA=0
  840.   For XRIGA=XRIGA To 0 Step -1
  841.    Proc MOSTRALARIGA[T0GLILARIGA] : Wait Vbl 
  842.   Next XRIGA
  843.   DURATADELLARIGA=-1
  844.  End If 
  845. End Proc
  846. Procedure CANCELLALEPALLINE
  847.  ' Turn off all the balls 
  848.  For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  849.   Bob Off OGGETTOPALLINA+PALLINA
  850.  Next PALLINA
  851.  Bob Update 
  852. End Proc
  853. Procedure CARICAGLIOGGETTI
  854.  ' Load the objects 
  855.  Load PERCORSODELLAGRAFICA$+OGGETTI$
  856. End Proc
  857. Procedure CARICAILLIVELLO
  858.  ' Load the level 
  859.  LIVELLO$="Livello"+Str$(LIVELLO)-" "
  860.  FILE$=PERCORSODEILIVELLI$+LIVELLO$
  861.  If Exist(FILE$)
  862.   Open In 1,FILE$
  863.   MARCATORE$=Input$(1,9)
  864.   LUNGHEZZABANCO=Lof(1)
  865.   Close 1
  866.   If MARCATORE$="Mattonite"
  867.    Reserve As Work BANCO,LUNGHEZZABANCO
  868.    Bload FILE$,Start(BANCO)
  869.   End If 
  870.  Else 
  871.   LIVELLO= Not LIVELLO
  872.  End If 
  873. End Proc
  874. Procedure CARICAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  875.  ' Load the top hundred scores
  876.  If Exist(PUNTEGGI$)
  877.   CENTOGIOCATORI$=""
  878.   Open In 1,PUNTEGGI$
  879.   For POSIZIONE=0 To 99
  880.    Exit If Eof(1)
  881.    Input #1,NOMEDELGIOCATORE$(POSIZIONE)
  882.    CENTOGIOCATORI$=CENTOGIOCATORI$+"<"+Str$(POSIZIONE+1)-" "+"> "
  883.    CENTOGIOCATORI$=CENTOGIOCATORI$+NOMEDELGIOCATORE$(POSIZIONE)+Chr$(10)
  884.    Input #1,PUNTEGGIODELGIOCATORE$(POSIZIONE)
  885.    CENTOGIOCATORI$=CENTOGIOCATORI$+PUNTEGGIODELGIOCATORE$(POSIZIONE)
  886.    CENTOGIOCATORI$=CENTOGIOCATORI$+" points up to level "
  887.    Input #1,LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONE)
  888.    CENTOGIOCATORI$=CENTOGIOCATORI$+LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONE)
  889.    If Not Eof(1)
  890.     CENTOGIOCATORI$=CENTOGIOCATORI$+Chr$(10)
  891.    End If 
  892.   Next POSIZIONE
  893.   Close 1
  894.   PUNTEGGIOMASSIMO=Val(PUNTEGGIODELGIOCATORE$(0))
  895.   Inc POSIZIONE
  896.  End If 
  897. End Proc
  898. Procedure CARICAISUONI
  899.  ' Load the sounds
  900.  Load PERCORSODELLAMUSICA$+SUONI$
  901. End Proc
  902. Procedure CREALEIMMAGINIPERLERIGHE
  903.  ' Create the row images
  904.  XFINALERIGA=XPANNELLO-1
  905.  IMMAGINERIGAUNO=IMMAGINEPALLINA+1
  906.  Ink 20 : Bar 0,251 To XFINALERIGA,255
  907.  Get Bob IMMAGINERIGAUNO,0,251 To XFINALERIGA+1,255+1
  908.  Hot Spot IMMAGINERIGAUNO,XFINALERIGA,0
  909.  IMMAGINERIGADUE=IMMAGINERIGAUNO+1
  910.  Ink 21 : Bar 0,251 To XFINALERIGA,255
  911.  Get Bob IMMAGINERIGADUE,0,251 To XFINALERIGA+1,255+1
  912.  Hot Spot IMMAGINERIGADUE,XFINALERIGA,0
  913.  IMMAGINERIGATRE=IMMAGINERIGADUE+1
  914.  Ink 22 : Bar 0,251 To XFINALERIGA,255
  915.  Get Bob IMMAGINERIGATRE,0,251 To XFINALERIGA+1,255+1
  916.  Hot Spot IMMAGINERIGATRE,XFINALERIGA,0
  917.  Ink 0 : Bar 0,251 To XFINALERIGA,255
  918. End Proc
  919. Procedure CREATESTOBORDATO[XTESTO,YTESTO,TESTO$,C0LORETESTO,C0LOREBORDO]
  920.  ' Create outlined text 
  921.  Ink C0LOREBORDO
  922.  Text XTESTO,YTESTO-1,TESTO$
  923.  Text XTESTO+1,YTESTO-1,TESTO$
  924.  Text XTESTO+1,YTESTO,TESTO$
  925.  Text XTESTO+1,YTESTO+1,TESTO$
  926.  Text XTESTO,YTESTO+1,TESTO$
  927.  Text XTESTO-1,YTESTO+1,TESTO$
  928.  Text XTESTO-1,YTESTO,TESTO$
  929.  Text XTESTO-1,YTESTO-1,TESTO$
  930.  Ink C0LORETESTO
  931.  Text XTESTO,YTESTO,TESTO$
  932. End Proc
  933. Procedure DABANCOAVARIABILI
  934.  ' Copy from bank to variables
  935.  If Length(BANCO)>0
  936.   INDIRIZZO=Start(BANCO)+9
  937.   For A=0 To 246
  938.    MATTONCINO(A)=Peek(INDIRIZZO)
  939.    Inc INDIRIZZO
  940.   Next A
  941.   For A=0 To 255
  942.    ARCOBALENO=Peek(INDIRIZZO)
  943.    Inc INDIRIZZO
  944.    ARCOBALENO=ARCOBALENO+Peek(INDIRIZZO)*$100
  945.    Rain(0,A)=ARCOBALENO : Rainbow 0,257,0,271
  946.    Wait Vbl 
  947.    Inc INDIRIZZO
  948.   Next A
  949.   BONUS=Peek(INDIRIZZO)
  950.   Inc INDIRIZZO
  951.   Add BONUS,Peek(INDIRIZZO)*100
  952.   Inc INDIRIZZO
  953.   Add BONUS,Peek(INDIRIZZO)*10000
  954.   Inc INDIRIZZO
  955.   Add BONUS,Peek(INDIRIZZO)*1000000
  956.   Inc INDIRIZZO
  957.  End If 
  958.  Erase BANCO
  959. End Proc
  960. Procedure DISSOLVENZADEICOLORI[C0LORE,VELOCITA,M0DO]
  961.  ' Fade the colours 
  962.  If M0DO=0
  963.   For C=0 To C0LORIDELLOSCHERMOMENOUNO
  964.    Colour C,C0LORE
  965.    If VELOCITA>0
  966.     Wait VELOCITA
  967.    End If 
  968.   Next C
  969.  Else 
  970.   Dim ROSSO(C0LORIDELLOSCHERMOMENOUNO),VERDE(C0LORIDELLOSCHERMOMENOUNO),BLU(C0LORIDELLOSCHERMOMENOUNO)
  971.   Dim ROSSOFINALE(C0LORIDELLOSCHERMOMENOUNO),VERDEFINALE(C0LORIDELLOSCHERMOMENOUNO),BLUFINALE(C0LORIDELLOSCHERMOMENOUNO)
  972.   Dim ROSSODISSOLTO(C0LORIDELLOSCHERMOMENOUNO),VERDEDISSOLTO(C0LORIDELLOSCHERMOMENOUNO),BLUDISSOLTO(C0LORIDELLOSCHERMOMENOUNO)
  973.   For C=0 To C0LORIDELLOSCHERMOMENOUNO
  974.    If M0DO=1
  975.     ROSSOFINALE(C)=C0LORE/256
  976.     VERDEFINALE(C)=C0LORE/16 mod 16
  977.     BLUFINALE(C)=C0LORE mod 16
  978.    Else If M0DO=2
  979.     ROSSOFINALE(C)=C0LORE(C)/256
  980.     VERDEFINALE(C)=C0LORE(C)/16 mod 16
  981.     BLUFINALE(C)=C0LORE(C) mod 16
  982.    End If 
  983.    ROSSO(C)=Colour(C)/256
  984.    VERDE(C)=Colour(C)/16 mod 16
  985.    BLU(C)=Colour(C) mod 16
  986.   Next C
  987.   Repeat 
  988.    For C=0 To C0LORIDELLOSCHERMOMENOUNO
  989.     If ROSSODISSOLTO(C)=FALSO
  990.      If ROSSO(C)<ROSSOFINALE(C)
  991.       Inc ROSSO(C)
  992.      Else If ROSSO(C)=ROSSOFINALE(C)
  993.       ROSSODISSOLTO(C)=VERO
  994.      Else If ROSSO(C)>ROSSOFINALE(C)
  995.       Dec ROSSO(C)
  996.      End If 
  997.     End If 
  998.     If VERDEDISSOLTO(C)=FALSO
  999.      If VERDE(C)<VERDEFINALE(C)
  1000.       Inc VERDE(C)
  1001.      Else If VERDE(C)=VERDEFINALE(C)
  1002.       VERDEDISSOLTO(C)=VERO
  1003.      Else If VERDE(C)>VERDEFINALE(C)
  1004.       Dec VERDE(C)
  1005.      End If 
  1006.     End If 
  1007.     If BLUDISSOLTO(C)=FALSO
  1008.      If BLU(C)<BLUFINALE(C)
  1009.       Inc BLU(C)
  1010.      Else If BLU(C)=BLUFINALE(C)
  1011.       BLUDISSOLTO(C)=VERO
  1012.      Else If BLU(C)>BLUFINALE(C)
  1013.       Dec BLU(C)
  1014.      End If 
  1015.     End If 
  1016.     Colour C,ROSSO(C)*256+VERDE(C)*16+BLU(C)
  1017.     If C=0
  1018.      C0LORIDISSOLTI=0
  1019.     End If 
  1020.     If ROSSODISSOLTO(C)=VERO
  1021.      If VERDEDISSOLTO(C)=VERO
  1022.       If BLUDISSOLTO(C)=VERO
  1023.        Inc C0LORIDISSOLTI
  1024.       End If 
  1025.      End If 
  1026.     End If 
  1027.    Next C
  1028.    If VELOCITA>0
  1029.     Wait VELOCITA
  1030.    End If 
  1031.   Until C0LORIDISSOLTI=C0LORIDELLOSCHERMOMENOUNO+1
  1032.  End If 
  1033. End Proc
  1034. Procedure FAIINSERIREALGIOCATOREILSUOPUNTEGGIO
  1035.  ' Let the player type his/her name and then insert name and score in the top 
  1036.  ' hundred scores 
  1037.  GIOCATORE$="Anonymous"
  1038.  Repeat 
  1039.   MESSAGGIO$=""
  1040.   MESSAGGIO$=MESSAGGIO$+"You have entered the Top Hundred Scores..."+Chr$(10)
  1041.   MESSAGGIO$=MESSAGGIO$+"...at position"+Str$(POSIZIONE)+"."+Chr$(10)
  1042.   MESSAGGIO$=MESSAGGIO$+"Please backspace the Anonymous player..."+Chr$(10)
  1043.   MESSAGGIO$=MESSAGGIO$+"...and type your name; press Return when done."+Chr$(10)
  1044.   MESSAGGIO$=MESSAGGIO$+GIOCATORE$+Chr$(10)
  1045.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[MESSAGGIO$,22,20,1,9000]
  1046.   If TASTO=0
  1047.    GIOCATORE$="Anonymous" : TASTO=13
  1048.   End If 
  1049.   If TASTO>255
  1050.    TASTO=TASTO mod 256
  1051.   End If 
  1052.   If TASTO=8
  1053.    GIOCATORE$=Left$(GIOCATORE$,Len(GIOCATORE$)-1)
  1054.   Else If TASTO=27
  1055.    TASTO=13 : TASTOESCAPEPREMUTO=VERO
  1056.   Else If TASTO>31
  1057.    GIOCATORE$=GIOCATORE$+Chr$(TASTO)
  1058.   End If 
  1059.  Until TASTO=13
  1060.  If TASTOESCAPEPREMUTO=FALSO
  1061.   For POSIZIONI=98 To 0 Step -1
  1062.    If Val(PUNTEGGIODELGIOCATORE$(POSIZIONI))<PUNTEGGIO
  1063.     NOMEDELGIOCATORE$(POSIZIONI+1)=NOMEDELGIOCATORE$(POSIZIONI)
  1064.     PUNTEGGIODELGIOCATORE$(POSIZIONI+1)=PUNTEGGIODELGIOCATORE$(POSIZIONI)
  1065.     LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONI+1)=LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONI)
  1066.    End If 
  1067.   Next POSIZIONI
  1068.   NOMEDELGIOCATORE$(POSIZIONE-1)=GIOCATORE$
  1069.   PUNTEGGIODELGIOCATORE$(POSIZIONE-1)=Str$(PUNTEGGIO)-" "
  1070.   If LIVELLO<0
  1071.    LIVELLO= Not LIVELLO
  1072.   End If 
  1073.   LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONE-1)=Str$(LIVELLO)-" "
  1074.  End If 
  1075. End Proc
  1076. Procedure HAISPARATOILRAGGIOLASER
  1077.  ' Fire the laser ray 
  1078.  If LASER>0 and RAGGIOLASERSPARATO=FALSO
  1079.   XLASER=XBARRA : YLASER=YBARRA+5 : IMMAGINERAGGIOLASER=9+LASER
  1080.   RAGGIOLASERSPARATO=VERO
  1081.   If SUONICARICATI=VERO
  1082.    Sam Play VOCE,4,8363/SEMITONO#^LASER : Proc VOCESEGUENTE
  1083.   Else 
  1084.    Shoot 
  1085.   End If 
  1086.  End If 
  1087. End Proc
  1088. Procedure ILBOINGESTATOCOLPITO[BOING]
  1089.  ' Check if the specified boing has been hitted 
  1090.  If Bob Col(OGGETTOBOING+BOING,OGGETTOPALLINA To OGGETTOPALLINA+MASSIMOPALLINEINCAMPO-1)=VERO
  1091.   PALLINA=Col(-1)-OGGETTOPALLINA
  1092.   XDISTANZADELLAPALLINADALBOINGCOLPITO=Abs(XBOING(BOING)-Int(XPALLINA#(PALLINA)))
  1093.   If XDISTANZADELLAPALLINADALBOINGCOLPITO>9
  1094.    DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
  1095.   End If 
  1096.   YDISTANZADELLAPALLINADALBOINGCOLPITO=Abs(YBOING(BOING)-Int(YPALLINA#(PALLINA)))
  1097.   If YDISTANZADELLAPALLINADALBOINGCOLPITO>9
  1098.    DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  1099.   End If 
  1100.   Add PUNTEGGIO,3 : Proc MOSTRAILPUNTEGGIO[VERO]
  1101.   BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING
  1102.   If SUONICARICATI=VERO
  1103.    Sam Play VOCE,9 : Proc VOCESEGUENTE
  1104.   Else 
  1105.    Bell 3
  1106.   End If 
  1107.  Else If Bob Col(OGGETTOBOING+BOING,OGGETTORAGGIOLASER To OGGETTORAGGIOLASER)=VERO
  1108.   Proc CANCELLAILRAGGIOLASER
  1109.   Add PUNTEGGIO,2 : Proc MOSTRAILPUNTEGGIO[VERO]
  1110.   BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING
  1111.   If SUONICARICATI=VERO
  1112.    Sam Play VOCE,9 : Proc VOCESEGUENTE
  1113.   Else 
  1114.    Bell 2
  1115.   End If 
  1116.  Else If Bob Col(OGGETTOBOING+BOING,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  1117.   Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
  1118.   BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING
  1119.   If SUONICARICATI=VERO
  1120.    Sam Play VOCE,9 : Proc VOCESEGUENTE
  1121.   Else 
  1122.    Bell 1
  1123.   End If 
  1124.  End If 
  1125. End Proc
  1126. Procedure ILBOINGEUSCITODALCAMPODIGIOCO[BOING]
  1127.  ' Check if the specified boing has gone out of the game field
  1128.  If YBOING(BOING)>255+9 Then BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING
  1129. End Proc
  1130. Procedure ILGUANOEUSCITODALCAMPODIGIOCO
  1131.  ' Check if the guano has gone out of the game field
  1132.  If YGUANO>255 Then Proc CANCELLAILGUANO
  1133. End Proc
  1134. Procedure ILPAPEROALIENOESTATOCOLPITO
  1135.  'check if the alien duck has been hitted 
  1136.  If Bob Col(OGGETTOPAPEROALIENO,OGGETTOPALLINA To OGGETTOPALLINA+MASSIMOPALLINEINCAMPO-1)=VERO
  1137.   PALLINA=Col(-1)-OGGETTOPALLINA
  1138.   XPALLINA=Int(XPALLINA#(PALLINA))
  1139.   XDISTANZADELLAPALLINADALPAPEROALIENO=Abs(XPAPEROALIENO-XPALLINA)
  1140.   If XDISTANZADELLAPALLINADALPAPEROALIENO>12
  1141.    DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
  1142.   End If 
  1143.   YPALLINA=Int(YPALLINA#(PALLINA))
  1144.   YDISTANZADELLAPALLINADALPAPEROALIENO=YPAPEROALIENO-YPALLINA
  1145.   If YDISTANZADELLAPALLINADALPAPEROALIENO>-21 and YDISTANZADELLAPALLINADALPAPEROALIENO<10
  1146.    DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  1147.   End If 
  1148.   Add PUNTEGGIO,24 : Proc MOSTRAILPUNTEGGIO[VERO]
  1149.   If SUONICARICATI=VERO
  1150.    Sam Play VOCE,9 : Proc VOCESEGUENTE
  1151.   Else 
  1152.    Boom 
  1153.   End If 
  1154.   _PAPEROALIENOCOLPITO=VERO
  1155.  Else If Bob Col(OGGETTOPAPEROALIENO,OGGETTORAGGIOLASER To OGGETTORAGGIOLASER)=VERO
  1156.   Proc CANCELLAILRAGGIOLASER
  1157.   Add PUNTEGGIO,12 : Proc MOSTRAILPUNTEGGIO[VERO]
  1158.   If SUONICARICATI=VERO
  1159.    Sam Play VOCE,9 : Proc VOCESEGUENTE
  1160.   Else 
  1161.    Boom 
  1162.   End If 
  1163.   _PAPEROALIENOCOLPITO=VERO
  1164.  Else If Bob Col(OGGETTOPAPEROALIENO,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  1165.   Add PUNTEGGIO,6 : Proc MOSTRAILPUNTEGGIO[VERO]
  1166.   If SUONICARICATI=VERO
  1167.    Sam Play VOCE,9 : Proc VOCESEGUENTE
  1168.   Else 
  1169.    Boom 
  1170.   End If 
  1171.   _PAPEROALIENOCOLPITO=VERO
  1172.  End If 
  1173.  If _PAPEROALIENOCOLPITO=VERO
  1174.   Proc CANCELLAILPAPEROALIENO
  1175.   Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELPAPEROALIENO
  1176.   Proc CANCELLAILGUANO
  1177.  End If 
  1178. End Proc
  1179. Procedure ILPAPEROALIENOEUSCITODALCAMPODIGIOCO
  1180.  ' Check if the alien duck has gone out of the game field 
  1181.  If YPAPEROALIENO>255+9 Then Proc CANCELLAILPAPEROALIENO
  1182. End Proc
  1183. Procedure ILRUBAPALLINAESTATOCOLPITO
  1184.  ' Check if the ballthief has been hitted 
  1185.  If RUBAPALLINACOLPITO=FALSO
  1186.   For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  1187.    If PALLINAPRESADALRUBAPALLINA<MASSIMOPALLINEINCAMPO
  1188.     If PALLINA<>PALLINAPRESADALRUBAPALLINA
  1189.      If Bob Col(OGGETTORUBAPALLINA,OGGETTOPALLINA+PALLINA To OGGETTOPALLINA+PALLINA)=VERO
  1190.       XPALLINA=Int(XPALLINA#(PALLINA))
  1191.       XDISTANZADELLAPALLINADALRUBAPALLINA=Abs(XRUBAPALLINA-XPALLINA)
  1192.       If XDISTANZADELLAPALLINADALRUBAPALLINA>12
  1193.        DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
  1194.       End If 
  1195.       YPALLINA=Int(YPALLINA#(PALLINA))
  1196.       YDISTANZADELLAPALLINADALRUBAPALLINA=YRUBAPALLINA-YPALLINA
  1197.       If YDISTANZADELLAPALLINADALRUBAPALLINA>0 and YDISTANZADELLAPALLINADALRUBAPALLINA<11
  1198.        DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  1199.       End If 
  1200.       Add PUNTEGGIO,50 : Proc MOSTRAILPUNTEGGIO[VERO]
  1201.       If SUONICARICATI=VERO
  1202.        Sam Play VOCE,9 : Proc VOCESEGUENTE
  1203.       Else 
  1204.        Boom 
  1205.       End If 
  1206.       RUBAPALLINACOLPITO=VERO
  1207.      End If 
  1208.     End If 
  1209.    End If 
  1210.   Next PALLINA
  1211.   If Bob Col(OGGETTORUBAPALLINA,OGGETTORAGGIOLASER To OGGETTORAGGIOLASER)=VERO
  1212.    Proc CANCELLAILRAGGIOLASER
  1213.    Add PUNTEGGIO,100 : Proc MOSTRAILPUNTEGGIO[VERO]
  1214.    If SUONICARICATI=VERO
  1215.     Sam Play VOCE,9 : Proc VOCESEGUENTE
  1216.    Else 
  1217.     Boom 
  1218.    End If 
  1219.    RUBAPALLINACOLPITO=VERO
  1220.   Else If Bob Col(OGGETTORUBAPALLINA,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  1221.    Add PUNTEGGIO,200 : Proc MOSTRAILPUNTEGGIO[VERO]
  1222.    If SUONICARICATI=VERO
  1223.     Sam Play VOCE,9 : Proc VOCESEGUENTE
  1224.    Else 
  1225.     Boom 
  1226.    End If 
  1227.    RUBAPALLINACOLPITO=VERO
  1228.   End If 
  1229.  Else 
  1230.   Inc IMMAGINERUBAPALLINA
  1231.   If IMMAGINERUBAPALLINA=10
  1232.    Proc CANCELLAILRUBAPALLINA
  1233.    Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELRUBAPALLINA
  1234.    If PALLINAPRESADALRUBAPALLINA<MASSIMOPALLINEINCAMPO
  1235.     PALLINA(PALLINAPRESADALRUBAPALLINA)=VERO
  1236.    End If 
  1237.    PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
  1238.    IMMAGINERUBAPALLINA=0
  1239.    RUBAPALLINACOLPITO=FALSO
  1240.   End If 
  1241.  End If 
  1242. End Proc
  1243. Procedure ILRUBAPALLINAEUSCITODALCAMPODIGIOCO
  1244.  ' Check if the ballthief has gone out of the game field
  1245.  If YRUBAPALLINA<-4
  1246.   Proc CANCELLAILRUBAPALLINA
  1247.   PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
  1248.   Dec PALLINEINCAMPO
  1249.  End If 
  1250. End Proc
  1251. Procedure IMPOSTAGLIOGGETTI
  1252.  ' Set the object images
  1253.  IMMAGINEPALLINA=Length(1)
  1254.  IMMAGINELASER=6
  1255.  MATTONCINIDIPOTENZIAMENTO=Length(1)-IMMAGINIBOING-IMMAGINIRUBAPALLINA-IMMAGINIGUANO-IMMAGINIPAPERO*2-116
  1256.  For IMMAGINE=0 To IMMAGINIBOING-1
  1257.   IMMAGINEBOING(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIBOING+IMMAGINE
  1258.  Next IMMAGINE
  1259.  For IMMAGINE=0 To IMMAGINIRUBAPALLINA-1
  1260.   IMMAGINERUBAPALLINA(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIBOING-IMMAGINIRUBAPALLINA+IMMAGINE
  1261.  Next IMMAGINE
  1262.  IMMAGINEGUANO=IMMAGINEPALLINA-IMMAGINIBOING-IMMAGINIRUBAPALLINA-IMMAGINIGUANO
  1263.  For IMMAGINE=0 To IMMAGINIPAPERO-1
  1264.   IMMAGINEPAPEROALIENO(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIBOING-IMMAGINIRUBAPALLINA-IMMAGINIGUANO-IMMAGINIPAPERO+IMMAGINE
  1265.  Next IMMAGINE
  1266.  For IMMAGINE=0 To IMMAGINIPAPERO-1
  1267.   IMMAGINEPAPERO(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIBOING-IMMAGINIRUBAPALLINA-IMMAGINIGUANO-IMMAGINIPAPERO*2+IMMAGINE
  1268.  Next IMMAGINE
  1269. End Proc
  1270. Procedure IMPOSTAIBOING
  1271.  ' Set the boings to their initial status   
  1272.  For BOING=0 To MASSIMOBOINGINCAMPO-1
  1273.   BOING(BOING)=0
  1274.  Next BOING
  1275. End Proc
  1276. Procedure IMPOSTAICOLORI
  1277.  ' Remember the screen palette
  1278.  Get Bob Palette 
  1279.  C0LORIDELLOSCHERMOMENOUNO=Screen Colour-1
  1280.  If C0LORIDELLOSCHERMOMENOUNO=63 Then C0LORIDELLOSCHERMOMENOUNO=31
  1281.  For C=0 To C0LORIDELLOSCHERMOMENOUNO
  1282.   C0LORE(C)=Colour(C)
  1283.  Next C
  1284. End Proc
  1285. Procedure IMPOSTAILAMPEGGI
  1286.  ' Set the colour flashes 
  1287.  Flash 20,"(0FF,2)(FFF,1)(0FF,2)(000,1)"
  1288.  Flash 21,"(F70,2)(FFF,1)(F70,2)(000,1)"
  1289.  Flash 22,"(F77,9)(FF7,9)(7F7,9)(7FF,9)(77F,9)(F7F,9)"
  1290. End Proc
  1291. Procedure IMPOSTAILRIMBALZODELLEPALLINE
  1292.  ' Set the bouncign of the balls to their initial state 
  1293.  For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  1294.   LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=FALSO
  1295.  Next PALLINA
  1296. End Proc
  1297. Procedure IMPOSTAILRITARDODELLENTRATAINCAMPODELPAPEROALIENO
  1298.  RITARDODELLENTRATAINCAMPODELPAPEROALIENO=29475-LIVELLO*25
  1299. End Proc
  1300. Procedure IMPOSTAILRITARDODELLENTRATAINCAMPODELRUBAPALLINA
  1301.  RITARDODELLENTRATAINCAMPODELRUBAPALLINA=55950-LIVELLO*50
  1302. End Proc
  1303. Procedure IMPOSTAIPERCORSIDEIFILE
  1304.  ' Look for the file paths
  1305.  PERCORSODELLAGRAFICA$=PERCORSO$+"Grafica/"
  1306.  PERCORSODEILIVELLI$=PERCORSO$+"Livelli/"
  1307.  PERCORSODELLAMUSICA$=PERCORSO$+"Musica/"
  1308. End Proc
  1309. Procedure IMPOSTALADURATADELLERIGHE
  1310.  ' Set the time duration of the rows in 50th of a second  
  1311.  DURATADELLARIGA(0)=3000
  1312.  DURATADELLARIGA(1)=9000
  1313.  DURATADELLARIGA(2)=27000
  1314. End Proc
  1315. Procedure IMPOSTALARCOBALENO
  1316.  ' Set the rainbow
  1317.  Set Rainbow 0,0,271,"","",""
  1318.  For LINEADELLARCOBALENO=0 To 255
  1319.   Rain(0,LINEADELLARCOBALENO)=$FFF
  1320.  Next LINEADELLARCOBALENO
  1321.  Rainbow 0,257,0,271
  1322. End Proc
  1323. Procedure IMPOSTALEVOCI
  1324.  'Set the audio voices
  1325.  For VOCE=0 To 3
  1326.   VOCE(VOCE)=2^VOCE
  1327.  Next VOCE
  1328. End Proc
  1329. Procedure IMPOSTALEZONEDEIMATTONCINI
  1330.  ' Set the brick detection zones
  1331.  Reserve Zone 264
  1332.  For MATTONCINO=0 To 246
  1333.   LINEADELMATTONCINO=MATTONCINO/13 : RIGADELMATTONCINO=MATTONCINO mod 13
  1334.   X0ZONA(MATTONCINO)=RIGADELMATTONCINO*21
  1335.   Y0ZONA(MATTONCINO)=LINEADELMATTONCINO*11
  1336.   X0MATTONCINO=X0ZONA(MATTONCINO)
  1337.   Y0MATTONCINO=Y0ZONA(MATTONCINO)
  1338.   If RIGADELMATTONCINO=12
  1339.    X1MATTONCINO=X0MATTONCINO+19
  1340.    Y1MATTONCINO=Y0MATTONCINO+9
  1341.   Else 
  1342.    X1MATTONCINO=X0MATTONCINO+20
  1343.    Y1MATTONCINO=Y0MATTONCINO+10
  1344.   End If 
  1345.   Set Zone MATTONCINO+1,X0MATTONCINO,Y0MATTONCINO To X1MATTONCINO,Y1MATTONCINO
  1346.  Next MATTONCINO
  1347. End Proc
  1348. Procedure IMPOSTALINGOMBRODELLABARRA
  1349.  ' Set the length of the bars from the center to an edge
  1350.  INGOMBRODELLABARRA(0)=10
  1351.  INGOMBRODELLABARRA(1)=16
  1352.  INGOMBRODELLABARRA(2)=31
  1353. End Proc
  1354. Procedure IMPOSTALOSCHERMO
  1355.  ' Set the screen 
  1356.  Screen Open 0,320,256,64,Lowres : Curs Off : Flash Off : Pen 1 : Paper 0 : Cls 
  1357.  Bob Update Off : Gr Writing 0 : Wait Vbl : Limit Mouse 
  1358. End Proc
  1359. Procedure INDIVIDUALAPOSIZIONEDELPROGRAMMA
  1360.  ' Look for the position of the program 
  1361.  PERCORSO$=Dir$
  1362. End Proc
  1363. Procedure LABARRAESTATACOLPITADALGUANO
  1364.  'Check if the bar has been hitted by the guano 
  1365.  If GUANOINCAMPO=VERO and GUANOMOLLATO=VERO
  1366.   If Bob Col(OGGETTOGUANO,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  1367.    EFFETTODELGUANO=Rnd(2)
  1368.    If EFFETTODELGUANO=2
  1369.     If LASER>0
  1370.      Dec LASER
  1371.     End If 
  1372.    Else If EFFETTODELGUANO=1
  1373.     _BARRABLOCCATA=50+LIVELLO
  1374.    End If 
  1375.    Proc CANCELLAILGUANO
  1376.   End If 
  1377.  End If 
  1378. End Proc
  1379. Procedure LABARRAESTATACOLPITADALRAGGIOLASERRIFLESSO
  1380.  ' Check if the bar  has been hitted by the reflected laser ray 
  1381.  If RAGGIOLASERSPARATO=VERO and RAGGIOLASERRIFLESSO=VERO
  1382.   If Bob Col(OGGETTORAGGIOLASER,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  1383.    EFFETTODELRAGGIOLASERRIFLESSO=Rnd(2)
  1384.    If EFFETTODELRAGGIOLASERRIFLESSO=2
  1385.     If LASER>0
  1386.      Dec LASER
  1387.     End If 
  1388.    Else If EFFETTODELRAGGIOLASERRIFLESSO=1
  1389.     _BARRABLOCCATA=50+LIVELLO
  1390.    End If 
  1391.    Proc CANCELLAILRAGGIOLASER
  1392.    RAGGIOLASERRIFLESSO=FALSO
  1393.   End If 
  1394.  End If 
  1395. End Proc
  1396. Procedure LAPALLINAEUSCITADALCAMPODIGIOCO[PALLINA]
  1397.  ' Check if the specified ball has gone out of the game field 
  1398.  If YPALLINA#(PALLINA)>255+3
  1399.   Proc CANCELLALAPALLINA[PALLINA]
  1400.   PALLINA(PALLINA)=FALSO
  1401.   Dec PALLINEINCAMPO
  1402.  End If 
  1403. End Proc
  1404. Procedure LAPALLINAHACOLPITOLABARRA[PALLINA]
  1405.  ' Check if the specified ball has hitted the bar 
  1406.  If Bob Col(OGGETTOPALLINA+PALLINA,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  1407.   If LAPALLINAHACOLPITOLABARRA(PALLINA)=FALSO
  1408.    If C0LLA=VERO
  1409.     XCOLLA(PALLINA)=XBARRA-Int(XPALLINA#(PALLINA))
  1410.     YCOLLA(PALLINA)=YBARRA-Int(YPALLINA#(PALLINA))
  1411.     LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=VERO
  1412.    End If 
  1413.    If Col(OGGETTOCENTRODELLABARRA)=VERO
  1414.     If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=VERO
  1415.      DELTAXPALLINA#(PALLINA)=DELTAXPALLINA#(PALLINA)/2.0
  1416.      DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)*2
  1417.      LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=FALSO
  1418.     Else 
  1419.      DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  1420.     End If 
  1421.     If SUONICARICATI=VERO
  1422.      Sam Play VOCE,2 : Proc VOCESEGUENTE
  1423.     Else 
  1424.      Boom 
  1425.     End If 
  1426.    Else If Col(OGGETTOLATIDELLABARRA)=VERO
  1427.     If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=VERO
  1428.      DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  1429.     Else 
  1430.      DELTAXPALLINA#(PALLINA)=DELTAXPALLINA#(PALLINA)*2
  1431.      DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)/2.0
  1432.      LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=VERO
  1433.     End If 
  1434.     If SUONICARICATI=VERO
  1435.      Sam Play VOCE,2,8363/2 : Proc VOCESEGUENTE
  1436.     Else 
  1437.      Boom 
  1438.     End If 
  1439.    End If 
  1440.    LAPALLINAHACOLPITOLABARRA(PALLINA)=VERO
  1441.   End If 
  1442.  Else 
  1443.   LAPALLINAHACOLPITOLABARRA(PALLINA)=FALSO
  1444.  End If 
  1445. End Proc
  1446. Procedure LAPALLINAHACOLPITOLARIGA[PALLINA]
  1447.  ' Check if the specified ball has hitted the row 
  1448.  If Bob Col(OGGETTOPALLINA+PALLINA,OGGETTORIGA To OGGETTORIGA)=VERO
  1449.   If DELTAYPALLINA#(PALLINA)>0
  1450.    DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  1451.    If SUONICARICATI=VERO
  1452.     Sam Play VOCE,7 : Proc VOCESEGUENTE
  1453.    Else 
  1454.     Bell 96
  1455.    End If 
  1456.   End If 
  1457.  End If 
  1458. End Proc
  1459. Procedure LIMITAIMOVIMENTIDELLABARRA
  1460.  ' Lock bar movements 
  1461.  X0LIMITETOPO=X Hard(INGOMBRODELLABARRA(LUNGHEZZADELLABARRA))
  1462.  Y0LIMITETOPO=Y Hard(0)
  1463.  X1LIMITETOPO=X Hard(XPANNELLO-1-INGOMBRODELLABARRA(LUNGHEZZADELLABARRA))
  1464.  Y1LIMITETOPO=Y Hard(Screen Height-1)
  1465.  Limit Mouse X0LIMITETOPO,Y0LIMITETOPO To X1LIMITETOPO,Y1LIMITETOPO
  1466. End Proc
  1467. Procedure LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
  1468.  ' Lock bar movements while it is changing
  1469.  If OGGETTO>39 and OGGETTO<46
  1470.   INGOMBRODELLABARRA=46-OGGETTO+10
  1471.  Else If OGGETTO>12 and OGGETTO<27
  1472.   INGOMBRODELLABARRA=OGGETTO+4
  1473.  End If 
  1474.  X0LIMITETOPO=X Hard(INGOMBRODELLABARRA)
  1475.  Y0LIMITETOPO=Y Hard(0)
  1476.  X1LIMITETOPO=X Hard(XPANNELLO-1-INGOMBRODELLABARRA)
  1477.  Y1LIMITETOPO=Y Hard(Screen Height-1)
  1478.  Wait Vbl 
  1479.  Limit Mouse X0LIMITETOPO,Y0LIMITETOPO To X1LIMITETOPO,Y1LIMITETOPO
  1480. End Proc
  1481. Procedure LIMITI[NUMERO,LIMITEMINIMO,LIMITEMASSIMO]
  1482.  '-> Limiti by Stefano Regattin 
  1483.  'i> 19 maggio 1996 
  1484.  'm> 12 giugno 1996 
  1485.  '--------------------------------------------------------
  1486.  'La procedura equivale alle seguenti linee di programma: 
  1487.  ' If NUMERO<LIMITEMINIMO Then NUMERO=LIMITEMINIMO
  1488.  ' If NUMERO>LIMITEMASSIMO Then NUMERO=LIMITEMASSIMO
  1489.  'Se LIMITEMINIMO è maggiore di LIMITEMASSIMO ne scambia i valori 
  1490.  '----------------------------------------------------------------  
  1491.  If LIMITEMINIMO>LIMITEMASSIMO Then Swap LIMITEMINIMO,LIMITEMASSIMO
  1492.  NUMERO=Max(Min(NUMERO,LIMITEMASSIMO),LIMITEMINIMO)
  1493. End Proc[NUMERO]
  1494. Procedure MATTONCINIDIPOTENZIAMENTO[MATTONCINO,ESCESEUGUALEAZERO]
  1495.  ' Manage the bonus bricks
  1496.  If ESCESEUGUALEAZERO>0 Then Pop Proc
  1497.  If MATTONCINO=0
  1498.   For MATTONCINODIPOTENZIAMENTO=0 To MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1
  1499.    TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)
  1500.    If TIPODIMATTONCINODIPOTENZIAMENTO>0
  1501.     Bob OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO,XMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO),YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO),115+TIPODIMATTONCINODIPOTENZIAMENTO
  1502.     Proc MATTONCINODIPOTENZIAMENTOPRESODALLABARRA[MATTONCINODIPOTENZIAMENTO,TIPODIMATTONCINODIPOTENZIAMENTO]
  1503.     Inc YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)
  1504.     Proc MATTONCINODIPOTENZIAMENTOUSCITODALCAMPODIGIOCO[MATTONCINODIPOTENZIAMENTO]
  1505.    End If 
  1506.   Next MATTONCINODIPOTENZIAMENTO
  1507.  Else 
  1508.   For MATTONCINODIPOTENZIAMENTO=0 To MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1
  1509.    TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)
  1510.    If TIPODIMATTONCINODIPOTENZIAMENTO=0
  1511.     If MATTONCINO>0
  1512.      MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=Rnd(19)+1
  1513.      XMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=X0ZONA(MATTONCINO-1)
  1514.      YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=Y0ZONA(MATTONCINO-1)
  1515.     Else If MATTONCINO<0
  1516.      MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=-MATTONCINO
  1517.      XMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=XBARRA-9
  1518.      YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=-9
  1519.     End If 
  1520.     Exit 
  1521.    End If 
  1522.   Next MATTONCINODIPOTENZIAMENTO
  1523.  End If 
  1524. End Proc
  1525. Procedure MATTONCINOCOLPITODALLAPALLINA[PALLINA]
  1526.  ' Check if a brick has been hitted by the specified ball 
  1527.  XPALLINA=Int(XPALLINA#(PALLINA)) : YPALLINA=Int(YPALLINA#(PALLINA))
  1528.  MATTONCINO=Zone(XPALLINA,YPALLINA)
  1529.  If MATTONCINO>0
  1530.   MATTONELLA=MATTONCINO(MATTONCINO-1)
  1531.   If MATTONELLA>0
  1532.    If MATTONELLA<10
  1533.     MATTONCINOELIMINATODALLAPALLINA=VERO
  1534.    Else If MATTONELLA>9 and MATTONELLA<28
  1535.     Add MATTONELLA,-9
  1536.     MATTONCINO(MATTONCINO-1)=MATTONELLA
  1537.     Proc RIDISEGNODELMATTONCINO[MATTONCINO,100]
  1538.    Else 
  1539.     Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINO,Rnd(9)]
  1540.     MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO
  1541.    End If 
  1542.    If MATTONCINOELIMINATODALLAPALLINA=VERO
  1543.     Dec MATTONCINI : Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
  1544.     Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINO,Rnd(19)]
  1545.     Proc RIDISEGNODELMATTONCINO[MATTONCINO,100]
  1546.     MATTONCINO(MATTONCINO-1)=0
  1547.    End If 
  1548.    Y0MATTONCINO=Y0ZONA(MATTONCINO-1)
  1549.    Y1MATTONCINO=Y0MATTONCINO+9
  1550.    If RIMBALZODELLEPALLINESUIMATTONCINI=VERO
  1551.     If YPALLINA<Y1MATTONCINO and YPALLINA>Y0MATTONCINO
  1552.      DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
  1553.     Else 
  1554.      DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  1555.     End If 
  1556.     If MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO
  1557.      If SUONICARICATI=VERO
  1558.       Sam Play VOCE,3,8363*SEMITONO#^4 : Proc VOCESEGUENTE
  1559.      Else 
  1560.       Bell 40
  1561.      End If 
  1562.     Else 
  1563.      If SUONICARICATI=VERO
  1564.       Sam Play VOCE,3 : Proc VOCESEGUENTE
  1565.      Else 
  1566.       Bell 30
  1567.      End If 
  1568.     End If 
  1569.    Else 
  1570.     If MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO
  1571.      If SUONICARICATI=VERO
  1572.       Sam Play VOCE,6,8363*SEMITONO#^4 : Proc VOCESEGUENTE
  1573.      Else 
  1574.       Bell 60
  1575.      End If 
  1576.     Else 
  1577.      If SUONICARICATI=VERO
  1578.       Sam Play VOCE,6 : Proc VOCESEGUENTE
  1579.      Else 
  1580.       Bell 50
  1581.      End If 
  1582.     End If 
  1583.    End If 
  1584.   End If 
  1585.  End If 
  1586. End Proc
  1587. Procedure MATTONCINOCOLPITODALRAGGIOLASER
  1588.  ' Check if a brick has been hitted by the laser ray
  1589.  If RAGGIOLASERSPARATO=VERO
  1590.   MATTONCINO=Zone(XLASER,YLASER)
  1591.   If MATTONCINO>0
  1592.    MATTONELLA=MATTONCINO(MATTONCINO-1)
  1593.    If MATTONELLA>0
  1594.     If MATTONELLA<10
  1595.      MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1596.     Else If MATTONELLA>9 and MATTONELLA<28
  1597.      Proc CANCELLAILRAGGIOLASER
  1598.      Add MATTONELLA,-9
  1599.      MATTONCINO(MATTONCINO-1)=MATTONELLA
  1600.      Proc RIDISEGNODELMATTONCINO[MATTONCINO,100]
  1601.     Else 
  1602.      If MATTONELLA=28
  1603.       MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1604.      Else If MATTONELLA=29 and LASER>1
  1605.       MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1606.      Else If MATTONELLA=30 and LASER=3
  1607.       MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1608.      Else If MATTONELLA=31
  1609.       RAGGIOLASERRIFLESSO=VERO
  1610.       QUESTOEILMATTONCINOCHEHARIFLESSOILRAGGIOLASER=VERO
  1611.       MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1612.      Else If MATTONELLA=32 and LASER>1
  1613.       RAGGIOLASERRIFLESSO=VERO
  1614.       QUESTOEILMATTONCINOCHEHARIFLESSOILRAGGIOLASER=VERO
  1615.       MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1616.      Else If MATTONELLA=33 and LASER=3
  1617.       RAGGIOLASERRIFLESSO=VERO
  1618.       QUESTOEILMATTONCINOCHEHARIFLESSOILRAGGIOLASER=VERO
  1619.       MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1620.      End If 
  1621.     End If 
  1622.     If MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1623.      If RAGGIOLASERRIFLESSO=FALSO or QUESTOEILMATTONCINOCHEHARIFLESSOILRAGGIOLASER=FALSO
  1624.       Proc CANCELLAILRAGGIOLASER
  1625.      End If 
  1626.      Proc RIDISEGNODELMATTONCINO[MATTONCINO,100]
  1627.      Dec MATTONCINI : Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
  1628.      Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINO,Rnd(9)]
  1629.      MATTONCINO(MATTONCINO-1)=0
  1630.     End If 
  1631.    End If 
  1632.   End If 
  1633.  End If 
  1634. End Proc
  1635. Procedure MATTONCINODIPOTENZIAMENTOPRESODALLABARRA[MATTONCINODIPOTENZIAMENTO,TIPODIMATTONCINODIPOTENZIAMENTO]
  1636.  ' Check if the bar has met the specified bonus brick 
  1637.  If Bob Col(OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  1638.   If TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINIDIPOTENZIAMENTO
  1639.    MATTONCINODIPOTENZIAMENTOASORPRESA=VERO
  1640.    Add PUNTEGGIO,20
  1641.   Else 
  1642.    Add PUNTEGGIO,10
  1643.   End If 
  1644.   Proc MOSTRAILPUNTEGGIO[VERO]
  1645.   Proc CANCELLAILMATTONCINODIPOTENZIAMENTO[MATTONCINODIPOTENZIAMENTO]
  1646.   Repeat 
  1647.    If TIPODIMATTONCINODIPOTENZIAMENTO=1 : Rem add a ball in the game field 
  1648.     For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  1649.      If PALLINA(PALLINA)=FALSO
  1650.       PALLINA(PALLINA)=VERO
  1651.       XPALLINA#(PALLINA)=XBARRA
  1652.       YPALLINA#(PALLINA)=YBARRA-3
  1653.       VELOCITADELLAPALLINA#(PALLINA)=1
  1654.       D1REZIONEXPALLINA=Rnd(1)
  1655.       If D1REZIONEXPALLINA=1
  1656.        DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)
  1657.       Else 
  1658.        DELTAXPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
  1659.       End If 
  1660.       DELTAYPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
  1661.       Inc PALLINEINCAMPO
  1662.       Exit 
  1663.      End If 
  1664.     Next 
  1665.     If SUONICARICATI=VERO
  1666.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  1667.     Else 
  1668.      Bell 30
  1669.     End If 
  1670.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1671.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=2 : Rem b(all)+  
  1672.     If PALLINE<1000
  1673.      Inc PALLINE : Proc MOSTRALEPALLINERIMASTE
  1674.     End If 
  1675.     If SUONICARICATI=VERO
  1676.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  1677.     Else 
  1678.      Bell 30
  1679.     End If 
  1680.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1681.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=3 : Rem b(all)-    
  1682.     If PALLINE>0
  1683.      Dec PALLINE : Proc MOSTRALEPALLINERIMASTE
  1684.     End If 
  1685.     If SUONICARICATI=VERO
  1686.      Sam Play VOCE,17 : Proc VOCESEGUENTE
  1687.     Else 
  1688.      Bell 10
  1689.     End If 
  1690.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1691.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=4 : Rem B(ar)+ 
  1692.     If LUNGHEZZADELLABARRA<2
  1693.      Inc LUNGHEZZADELLABARRACAMBIATA
  1694.     End If 
  1695.     If SUONICARICATI=VERO
  1696.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  1697.     Else 
  1698.      Bell 30
  1699.     End If 
  1700.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1701.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=5 : Rem B(ar)- 
  1702.     If LUNGHEZZADELLABARRA>0
  1703.      Dec LUNGHEZZADELLABARRACAMBIATA
  1704.     End If 
  1705.     If SUONICARICATI=VERO
  1706.      Sam Play VOCE,17 : Proc VOCESEGUENTE
  1707.     Else 
  1708.      Bell 10
  1709.     End If 
  1710.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1711.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=6 : Rem D(uck) 
  1712.     _PAPEROINCAMPO= Not _PAPEROINCAMPO
  1713.     If _PAPEROINCAMPO=VERO
  1714.      If SUONICARICATI=VERO
  1715.       Sam Play VOCE,16 : Proc VOCESEGUENTE
  1716.      Else 
  1717.       Bell 30
  1718.      End If 
  1719.     Else 
  1720.      Proc CANCELLAILPAPERO
  1721.      If SUONICARICATI=VERO
  1722.       Sam Play VOCE,17 : Proc VOCESEGUENTE
  1723.      Else 
  1724.       Bell 10
  1725.      End If 
  1726.     End If 
  1727.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1728.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=7 : Rem G(lue) 
  1729.     C0LLA= Not C0LLA
  1730.     If C0LLA=VERO
  1731.      If SUONICARICATI=VERO
  1732.       Sam Play VOCE,16 : Proc VOCESEGUENTE
  1733.      Else 
  1734.       Bell 30
  1735.      End If 
  1736.     Else 
  1737.      If SUONICARICATI=VERO
  1738.       Sam Play VOCE,17 : Proc VOCESEGUENTE
  1739.      Else 
  1740.       Bell 10
  1741.      End If 
  1742.     End If 
  1743.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1744.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=8 : Rem L(aser)+ 
  1745.     If LASER=-1
  1746.      LASER=1
  1747.     Else If LASER=1
  1748.      LASER=2
  1749.     Else If LASER=2
  1750.      LASER=3
  1751.     End If 
  1752.     If SUONICARICATI=VERO
  1753.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  1754.     Else 
  1755.      Bell 30
  1756.     End If 
  1757.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1758.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=9 : Rem L(aser)- 
  1759.     If LASER>0
  1760.      Dec LASER
  1761.     End If 
  1762.     If SUONICARICATI=VERO
  1763.      Sam Play VOCE,17 : Proc VOCESEGUENTE
  1764.     Else 
  1765.      Bell 10
  1766.     End If 
  1767.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1768.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=10 : Rem N(ext level) 
  1769.     MATTONCINIRIMASTI=MATTONCINI : MATTONCINI=0
  1770.     If SUONICARICATI=VERO
  1771.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  1772.     Else 
  1773.      Bell 30
  1774.     End If 
  1775.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1776.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=11 : Rem P(oints)+  
  1777.     If MATTONCINODIPOTENZIAMENTOASORPRESA=VERO
  1778.      If PUNTEGGIO<9999800
  1779.       Add PUNTEGGIO,180
  1780.      End If 
  1781.     Else 
  1782.      If PUNTEGGIO<9999900
  1783.       Add PUNTEGGIO,90
  1784.      End If 
  1785.     End If 
  1786.     Proc MOSTRAILPUNTEGGIO[VERO]
  1787.     If SUONICARICATI=VERO
  1788.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  1789.     Else 
  1790.      Bell 30
  1791.     End If 
  1792.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1793.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=12 : Rem P(oints)-  
  1794.     If MATTONCINODIPOTENZIAMENTOASORPRESA=VERO
  1795.      Add PUNTEGGIO,-220
  1796.     Else 
  1797.      Add PUNTEGGIO,-110
  1798.     End If 
  1799.     If PUNTEGGIO<0
  1800.      PUNTEGGIO=0
  1801.     End If 
  1802.     Proc MOSTRAILPUNTEGGIO[VERO]
  1803.     If SUONICARICATI=VERO
  1804.      Sam Play VOCE,17 : Proc VOCESEGUENTE
  1805.     Else 
  1806.      Bell 10
  1807.     End If 
  1808.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1809.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=13 : Rem R(ow)+ 
  1810.     If RIGA<3
  1811.      T0GLILARIGA=RIGA : Inc RIGA
  1812.     End If 
  1813.     If SUONICARICATI=VERO
  1814.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  1815.     Else 
  1816.      Bell 30
  1817.     End If 
  1818.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1819.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=14 : Rem R(ow)- 
  1820.     If RIGA>0
  1821.      T0GLILARIGA=RIGA : RIGA=0
  1822.     End If 
  1823.     If SUONICARICATI=VERO
  1824.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  1825.     Else 
  1826.      Bell 30
  1827.     End If 
  1828.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1829.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=15 : Rem S(peed)+ 
  1830.     For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  1831.      If PALLINA(PALLINA)=VERO and VELOCITADELLAPALLINA#(PALLINA)<8
  1832.       VELOCITADELLAPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)+0.5
  1833.       If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)
  1834.        DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*2*Sgn(DELTAXPALLINA#(PALLINA))
  1835.        DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)/2.0*Sgn(DELTAYPALLINA#(PALLINA))
  1836.       Else 
  1837.        DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAXPALLINA#(PALLINA))
  1838.        DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAYPALLINA#(PALLINA))
  1839.       End If 
  1840.      End If 
  1841.     Next PALLINA
  1842.     If SUONICARICATI=VERO
  1843.      Sam Play VOCE,17 : Proc VOCESEGUENTE
  1844.     Else 
  1845.      Bell 30
  1846.     End If 
  1847.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1848.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=16 : Rem S(peed)- 
  1849.     For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  1850.      If PALLINA(PALLINA)=VERO and VELOCITADELLAPALLINA#(PALLINA)>0.5
  1851.       VELOCITADELLAPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)-0.5
  1852.       If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)
  1853.        DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*2*Sgn(DELTAXPALLINA#(PALLINA))
  1854.        DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)/2.0*Sgn(DELTAYPALLINA#(PALLINA))
  1855.       Else 
  1856.        DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAXPALLINA#(PALLINA))
  1857.        DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAYPALLINA#(PALLINA))
  1858.       End If 
  1859.      End If 
  1860.     Next PALLINA
  1861.     If SUONICARICATI=VERO
  1862.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  1863.     Else 
  1864.      Bell 30
  1865.     End If 
  1866.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1867.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=17 : Rem X(treme) 
  1868.     RIMBALZODELLEPALLINESUIMATTONCINI= Not RIMBALZODELLEPALLINESUIMATTONCINI
  1869.     If RIMBALZODELLEPALLINESUIMATTONCINI=FALSO
  1870.      If SUONICARICATI=VERO
  1871.       Sam Play VOCE,16 : Proc VOCESEGUENTE
  1872.      Else 
  1873.       Bell 30
  1874.      End If 
  1875.     Else 
  1876.      If SUONICARICATI=VERO
  1877.       Sam Play VOCE,17 : Proc VOCESEGUENTE
  1878.      Else 
  1879.       Bell 10
  1880.      End If 
  1881.     End If 
  1882.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1883.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=18 : Rem y+ 
  1884.     If YBARRA<247
  1885.      Add YBARRA,5
  1886.     End If 
  1887.     If SUONICARICATI=VERO
  1888.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  1889.     Else 
  1890.      Bell 30
  1891.     End If 
  1892.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1893.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=19 : Rem y- 
  1894.     If YBARRA>197
  1895.      Add YBARRA,-5
  1896.     End If 
  1897.     If SUONICARICATI=VERO
  1898.      Sam Play VOCE,17 : Proc VOCESEGUENTE
  1899.     Else 
  1900.      Bell 10
  1901.     End If 
  1902.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1903.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINIDIPOTENZIAMENTO : Rem ?
  1904.     TIPODIMATTONCINODIPOTENZIAMENTO=Rnd(18)+1
  1905.    End If 
  1906.   Until TIPODIMATTONCINODIPOTENZIAMENTO=0
  1907.  End If 
  1908. End Proc
  1909. Procedure MATTONCINODIPOTENZIAMENTOUSCITODALCAMPODIGIOCO[MATTONCINODIPOTENZIAMENTO]
  1910.  ' Check if the specified bonus brick has gone out of the game field
  1911.  If YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)>255
  1912.   Proc CANCELLAILMATTONCINODIPOTENZIAMENTO[MATTONCINODIPOTENZIAMENTO]
  1913.  End If 
  1914. End Proc
  1915. Procedure METTIILPANNELLO
  1916.  ' Put the panel in the game field
  1917.  XPANNELLO=Screen Width-LARGHEZZAPANNELLO
  1918.  Paste Bob XPANNELLO,0,51 : Paste Bob XPANNELLO,128,52
  1919. End Proc
  1920. Procedure METTIECONTAIMATTONCINI
  1921.  ' Put the bricks in the game field and count them
  1922.  MATTONCINI=0
  1923.  For MATTONCINO=0 To 246
  1924.   If MATTONCINO(MATTONCINO)>0
  1925.    Paste Bob X0ZONA(MATTONCINO),Y0ZONA(MATTONCINO),82+MATTONCINO(MATTONCINO)
  1926.    Inc MATTONCINI
  1927.   Else 
  1928.    Ink 0 : Bar X0ZONA(MATTONCINO),Y0ZONA(MATTONCINO) To X0ZONA(MATTONCINO)+19,Y0ZONA(MATTONCINO)+9
  1929.   End If 
  1930.  Next MATTONCINO
  1931. End Proc
  1932. Procedure METTIILGIOCOINPAUSA
  1933.  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1]
  1934.  MESSAGGIO$="The game is paused."+Chr$(10)
  1935.  MESSAGGIO$=MESSAGGIO$+"Press a (mouse) key to continue..."
  1936.  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[MESSAGGIO$,22,20,1,0]
  1937.  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  1938. End Proc
  1939. Procedure MOLLAILGUANO
  1940.  ' Drop the guano 
  1941.  If GUANOINCAMPO=VERO
  1942.   If GUANOMOLLATO=FALSO
  1943.    XGUANO=XPAPEROALIENO : YGUANO=YPAPEROALIENO+35 : GUANOMOLLATO=VERO
  1944.   Else 
  1945.    Bob OGGETTOGUANO,XGUANO,YGUANO,IMMAGINEGUANO
  1946.    Proc LABARRAESTATACOLPITADALGUANO
  1947.    Proc ILGUANOEUSCITODALCAMPODIGIOCO
  1948.    Add YGUANO,3
  1949.   End If 
  1950.  End If 
  1951. End Proc
  1952. Procedure MOSTRAICREDITI
  1953.  ' Show the credits 
  1954.  CREDITI$="EsseErre Sofware Solutions"+Chr$(10)
  1955.  CREDITI$=CREDITI$+"presents..."+Chr$(10)
  1956.  CREDITI$=CREDITI$+"************"+Chr$(10)
  1957.  CREDITI$=CREDITI$+"* MATTONITE *"+Chr$(10)
  1958.  CREDITI$=CREDITI$+"************"+Chr$(10)
  1959.  CREDITI$=CREDITI$+"by Stefano Maria Regattin"+Chr$(10)
  1960.  CREDITI$=CREDITI$+"piazza Pietro Gasparri, 4/U"+Chr$(10)
  1961.  CREDITI$=CREDITI$+"20161 Milano (Milan) Italia (Italy)"+Chr$(10)
  1962.  CREDITI$=CREDITI$+"http://utenti.tripod.it/esseerre/Stefano.html"+Chr$(10)
  1963.  CREDITI$=CREDITI$+"e-mail: esseerre@lycos.it"+Chr$(10)
  1964.  CREDITI$=CREDITI$+"This game, its editor and the related source"+Chr$(10)
  1965.  CREDITI$=CREDITI$+"codes are freely shared out."+Chr$(10)
  1966.  CREDITI$=CREDITI$+"They have been created by AMOS Professional 2.0"+Chr$(10)
  1967.  CREDITI$=CREDITI$+"and compiled by AMOS Professional Compiler 2.0."+Chr$(10)
  1968.  CREDITI$=CREDITI$+"The source codes don't require any additional"+Chr$(10)
  1969.  CREDITI$=CREDITI$+"extension."+Chr$(10)
  1970.  CREDITI$=CREDITI$+"If you will create a new game starting from these"+Chr$(10)
  1971.  CREDITI$=CREDITI$+"source codes, let me know and don't forget to"+Chr$(10)
  1972.  CREDITI$=CREDITI$+"email me and mention me in your resulting creation."+Chr$(10)
  1973.  CREDITI$=CREDITI$+"One day I have asked to my major sister Antonella"+Chr$(10)
  1974.  CREDITI$=CREDITI$+"if she would liked I created a game for her,"+Chr$(10)
  1975.  CREDITI$=CREDITI$+"assuring her I was able to create almost any"+Chr$(10)
  1976.  CREDITI$=CREDITI$+"kind of game she wanted."+Chr$(10)
  1977.  CREDITI$=CREDITI$+"The answer was yes and she specified a game"+Chr$(10)
  1978.  CREDITI$=CREDITI$+"with a bar, a bouncing ball over the bar and"+Chr$(10)
  1979.  CREDITI$=CREDITI$+"dozens of bricks deletable by the ball hit,"+Chr$(10)
  1980.  CREDITI$=CREDITI$+"gaining points for the hits."+Chr$(10)
  1981.  CREDITI$=CREDITI$+"So I started the developing of this game and"+Chr$(10)
  1982.  CREDITI$=CREDITI$+"she called it Mattonite, that in italian means"+Chr$(10)
  1983.  CREDITI$=CREDITI$+"brickache."+Chr$(10)
  1984.  CREDITI$=CREDITI$+"The purpose of the game is simple: destroy all"+Chr$(10)
  1985.  CREDITI$=CREDITI$+"the bricks by the balls hits to overcome all"+Chr$(10)
  1986.  CREDITI$=CREDITI$+"the levels and collect bonus bricks to improve"+Chr$(10)
  1987.  CREDITI$=CREDITI$+"playability."+Chr$(10)
  1988.  CREDITI$=CREDITI$+"The duck eats all the bricks, but avoid the alien"+Chr$(10)
  1989.  CREDITI$=CREDITI$+"duck's guano!"+Chr$(10)
  1990.  CREDITI$=CREDITI$+"Avoid the reflected laser ray also!"+Chr$(10)
  1991.  CREDITI$=CREDITI$+"The three flashing cyan digits report the balls"+Chr$(10)
  1992.  CREDITI$=CREDITI$+"left."+Chr$(10)
  1993.  CREDITI$=CREDITI$+"The three flasing orange digits report the"+Chr$(10)
  1994.  CREDITI$=CREDITI$+"current level."+Chr$(10)
  1995.  CREDITI$=CREDITI$+"The three flashing rainbow colours digits report"+Chr$(10)
  1996.  CREDITI$=CREDITI$+"the score position relative to the top hundred"+Chr$(10)
  1997.  CREDITI$=CREDITI$+"scores."+Chr$(10)
  1998.  CREDITI$=CREDITI$+"The seven flashing cyan digits column report"+Chr$(10)
  1999.  CREDITI$=CREDITI$+"the score."+Chr$(10)
  2000.  CREDITI$=CREDITI$+"The seven flashing orange digits column report"+Chr$(10)
  2001.  CREDITI$=CREDITI$+"the first position score."+Chr$(10)
  2002.  CREDITI$=CREDITI$+"The seven flashing rainbow colors digits report"+Chr$(10)
  2003.  CREDITI$=CREDITI$+"the current level bonus."+Chr$(10)
  2004.  CREDITI$=CREDITI$+"Press the space bar to shock the balls."+Chr$(10)
  2005.  CREDITI$=CREDITI$+"Press the shift keys to fire the laser ray over"+Chr$(10)
  2006.  CREDITI$=CREDITI$+"the bricks to hit the boings or, better, to hit"+Chr$(10)
  2007.  CREDITI$=CREDITI$+"the ballthief!"+Chr$(10)
  2008.  CREDITI$=CREDITI$+"Press the P key to pause the game."+Chr$(10)
  2009.  CREDITI$=CREDITI$+"Press a (mouse) key to scroll quickly the text"+Chr$(10)
  2010.  CREDITI$=CREDITI$+"or press the Esc key to leave the text."+Chr$(10)
  2011.  CREDITI$=CREDITI$+"This is the end...Enjoy!"
  2012.  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[CREDITI$,22,22,1,250]
  2013. End Proc
  2014. Procedure MOSTRAILBONUS[M0DO]
  2015.  ' Show the bonus 
  2016.  If M0DO=VERO
  2017.   CIFRA=BONUS/1000000 mod 10
  2018.   Paste Bob 305,120,73+CIFRA
  2019.   CIFRA=BONUS/100000 mod 10
  2020.   Paste Bob 305,138,73+CIFRA
  2021.   CIFRA=BONUS/10000 mod 10
  2022.   Paste Bob 305,156,73+CIFRA
  2023.   CIFRA=BONUS/1000 mod 10
  2024.   Paste Bob 305,174,73+CIFRA
  2025.   CIFRA=BONUS/100 mod 10
  2026.   Paste Bob 305,192,73+CIFRA
  2027.   CIFRA=BONUS/10 mod 10
  2028.   Paste Bob 305,210,73+CIFRA
  2029.   CIFRA=BONUS mod 10
  2030.   Paste Bob 305,228,73+CIFRA
  2031.  Else 
  2032.   CIFRA=BONUS mod 10
  2033.   Paste Bob 305,228,73+CIFRA
  2034.   If CIFRA=9
  2035.    CIFRA=BONUS/10 mod 10
  2036.    Paste Bob 305,210,73+CIFRA
  2037.    If CIFRA=9
  2038.     CIFRA=BONUS/100 mod 10
  2039.     Paste Bob 305,192,73+CIFRA
  2040.     If CIFRA=9
  2041.      CIFRA=BONUS/1000 mod 10
  2042.      Paste Bob 305,174,73+CIFRA
  2043.      If CIFRA=9
  2044.       CIFRA=BONUS/10000 mod 10
  2045.       Paste Bob 305,156,73+CIFRA
  2046.       If CIFRA=9
  2047.        CIFRA=BONUS/100000 mod 10
  2048.        Paste Bob 305,138,73+CIFRA
  2049.        If CIFRA=9
  2050.         CIFRA=BONUS/1000000 mod 10
  2051.         Paste Bob 305,120,73+CIFRA
  2052.        End If 
  2053.       End If 
  2054.      End If 
  2055.     End If 
  2056.    End If 
  2057.   End If 
  2058.  End If 
  2059. End Proc
  2060. Procedure MOSTRAILLASER
  2061.  ' Show the laser beam over the bar 
  2062.  If LASER>0
  2063.   Bob OGGETTOLASER,XBARRA,YBARRA,IMMAGINELASER+LASER
  2064.  Else If LASER=0
  2065.   Proc T0GLIILLASER
  2066.   LASER=-1
  2067.  End If 
  2068. End Proc
  2069. Procedure MOSTRAILLIVELLO
  2070.  ' Shov the level 
  2071.  CIFRA=LIVELLO/100 mod 10
  2072.  Paste Bob 273,29,63+CIFRA
  2073.  CIFRA=LIVELLO/10 mod 10
  2074.  Paste Bob 289,29,63+CIFRA
  2075.  CIFRA=LIVELLO mod 10
  2076.  Paste Bob 305,29,63+CIFRA
  2077. End Proc
  2078. Procedure MOSTRAILPUNTEGGIO[M0DO]
  2079.  ' Show the score 
  2080.  If M0DO=VERO
  2081.   CIFRA=PUNTEGGIO/1000000 mod 10
  2082.   Paste Bob 273,120,53+CIFRA
  2083.   CIFRA=PUNTEGGIO/100000 mod 10
  2084.   Paste Bob 273,138,53+CIFRA
  2085.   CIFRA=PUNTEGGIO/10000 mod 10
  2086.   Paste Bob 273,156,53+CIFRA
  2087.   CIFRA=PUNTEGGIO/1000 mod 10
  2088.   Paste Bob 273,174,53+CIFRA
  2089.   CIFRA=PUNTEGGIO/100 mod 10
  2090.   Paste Bob 273,192,53+CIFRA
  2091.   CIFRA=PUNTEGGIO/10 mod 10
  2092.   Paste Bob 273,210,53+CIFRA
  2093.   CIFRA=PUNTEGGIO mod 10
  2094.   Paste Bob 273,228,53+CIFRA
  2095.  Else 
  2096.   CIFRA=PUNTEGGIO mod 10
  2097.   Paste Bob 273,228,53+CIFRA
  2098.   If CIFRA=0
  2099.    CIFRA=PUNTEGGIO/10 mod 10
  2100.    Paste Bob 273,210,53+CIFRA
  2101.    If CIFRA=0
  2102.     CIFRA=PUNTEGGIO/100 mod 10
  2103.     Paste Bob 273,192,53+CIFRA
  2104.     If CIFRA=0
  2105.      CIFRA=PUNTEGGIO/1000 mod 10
  2106.      Paste Bob 273,174,53+CIFRA
  2107.      If CIFRA=0
  2108.       CIFRA=PUNTEGGIO/10000 mod 10
  2109.       Paste Bob 273,156,53+CIFRA
  2110.       If CIFRA=0
  2111.        CIFRA=PUNTEGGIO/100000 mod 10
  2112.        Paste Bob 273,138,53+CIFRA
  2113.        If CIFRA=0
  2114.         CIFRA=PUNTEGGIO/1000000 mod 10
  2115.         Paste Bob 273,120,53+CIFRA
  2116.        End If 
  2117.       End If 
  2118.      End If 
  2119.     End If 
  2120.    End If 
  2121.   End If 
  2122.  End If 
  2123.  If PUNTEGGIO>PUNTEGGIOMASSIMO
  2124.   PUNTEGGIOMASSIMO=PUNTEGGIO
  2125.  End If 
  2126.  Proc MOSTRAILPUNTEGGIOMASSIMO[M0DO]
  2127.  Proc MOSTRALAPOSIZIONE
  2128. End Proc
  2129. Procedure MOSTRAILPUNTEGGIOMASSIMO[M0DO]
  2130.  ' Show the best score
  2131.  If M0DO=VERO
  2132.   CIFRA=PUNTEGGIOMASSIMO/1000000 mod 10
  2133.   Paste Bob 289,120,63+CIFRA
  2134.   CIFRA=PUNTEGGIOMASSIMO/100000 mod 10
  2135.   Paste Bob 289,138,63+CIFRA
  2136.   CIFRA=PUNTEGGIOMASSIMO/10000 mod 10
  2137.   Paste Bob 289,156,63+CIFRA
  2138.   CIFRA=PUNTEGGIOMASSIMO/1000 mod 10
  2139.   Paste Bob 289,174,63+CIFRA
  2140.   CIFRA=PUNTEGGIOMASSIMO/100 mod 10
  2141.   Paste Bob 289,192,63+CIFRA
  2142.   CIFRA=PUNTEGGIOMASSIMO/10 mod 10
  2143.   Paste Bob 289,210,63+CIFRA
  2144.   CIFRA=PUNTEGGIOMASSIMO mod 10
  2145.   Paste Bob 289,228,63+CIFRA
  2146.  Else 
  2147.   CIFRA=PUNTEGGIOMASSIMO mod 10
  2148.   Paste Bob 289,228,63+CIFRA
  2149.   If CIFRA=0
  2150.    CIFRA=PUNTEGGIOMASSIMO/10 mod 10
  2151.    Paste Bob 289,210,63+CIFRA
  2152.    If CIFRA=0
  2153.     CIFRA=PUNTEGGIOMASSIMO/100 mod 10
  2154.     Paste Bob 289,192,63+CIFRA
  2155.     If CIFRA=0
  2156.      CIFRA=PUNTEGGIOMASSIMO/1000 mod 10
  2157.      Paste Bob 289,174,63+CIFRA
  2158.      If CIFRA=0
  2159.       CIFRA=PUNTEGGIOMASSIMO/10000 mod 10
  2160.       Paste Bob 289,156,63+CIFRA
  2161.       If CIFRA=0
  2162.        CIFRA=PUNTEGGIOMASSIMO/100000 mod 10
  2163.        Paste Bob 289,138,63+CIFRA
  2164.        If CIFRA=0
  2165.         CIFRA=PUNTEGGIOMASSIMO/1000000 mod 10
  2166.         Paste Bob 289,120,63+CIFRA
  2167.        End If 
  2168.       End If 
  2169.      End If 
  2170.     End If 
  2171.    End If 
  2172.   End If 
  2173.  End If 
  2174. End Proc
  2175. Procedure MOSTRAILRAGGIOLASER
  2176.  ' Show the laser ray 
  2177.  If RAGGIOLASERSPARATO=VERO
  2178.   Bob OGGETTORAGGIOLASER,XLASER,YLASER,IMMAGINERAGGIOLASER
  2179.   If RAGGIOLASERRIFLESSO=VERO
  2180.    If YLASER<255
  2181.     Add YLASER,5
  2182.    Else 
  2183.     RAGGIOLASERRIFLESSO=FALSO
  2184.     Proc CANCELLAILRAGGIOLASER
  2185.    End If 
  2186.   Else 
  2187.    If YLASER>0
  2188.     Add YLASER,-5
  2189.    Else 
  2190.     Proc CANCELLAILRAGGIOLASER
  2191.    End If 
  2192.   End If 
  2193.   Bob Update 
  2194.  End If 
  2195. End Proc
  2196. Procedure MOSTRAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  2197.  ' Show the top hundred player scores 
  2198.  If Exist(PUNTEGGI$) and CENTOGIOCATORI$<>""
  2199.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[CENTOGIOCATORI$,20,22,1,250]
  2200.  Else 
  2201.   NONCISONOGIOCATORI$="No players till now..."+Chr$(10)
  2202.   NONCISONOGIOCATORI$=NONCISONOGIOCATORI$+"Press a (mouse) key to continue"
  2203.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[NONCISONOGIOCATORI$,21,20,1,250]
  2204.  End If 
  2205. End Proc
  2206. Procedure MOSTRALABARRA
  2207.  ' Show the bar 
  2208.  If LUNGHEZZADELLABARRA=0
  2209.   Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,5
  2210.   Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,6
  2211.  Else If LUNGHEZZADELLABARRA=1
  2212.   Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,1
  2213.   Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,2
  2214.  Else If LUNGHEZZADELLABARRA=2
  2215.   Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,3
  2216.   Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,4
  2217.  End If 
  2218. End Proc
  2219. Procedure MOSTRALAPOSIZIONE
  2220.  ' Show the current player position 
  2221.  For POSIZIONE=1 To 100
  2222.   If PUNTEGGIO>Val(PUNTEGGIODELGIOCATORE$(POSIZIONE-1))
  2223.    Exit 
  2224.   Else If PUNTEGGIODELGIOCATORE$(POSIZIONE-1)=""
  2225.    Exit 
  2226.   End If 
  2227.  Next POSIZIONE
  2228.  CIFRA=POSIZIONE/100 mod 10
  2229.  Paste Bob 273,47,73+CIFRA
  2230.  CIFRA=POSIZIONE/10 mod 10
  2231.  Paste Bob 289,47,73+CIFRA
  2232.  CIFRA=POSIZIONE mod 10
  2233.  Paste Bob 305,47,73+CIFRA
  2234. End Proc
  2235. Procedure MOSTRALARIGA[TIPODIRIGA]
  2236.  ' Show the row 
  2237.  If TIPODIRIGA=1
  2238.   IMMAGINERIGA=IMMAGINERIGAUNO
  2239.  Else If TIPODIRIGA=2
  2240.   IMMAGINERIGA=IMMAGINERIGADUE
  2241.  Else If TIPODIRIGA=3
  2242.   IMMAGINERIGA=IMMAGINERIGATRE
  2243.  End If 
  2244.  If XRIGA>0
  2245.   Bob OGGETTORIGA,XRIGA,251,IMMAGINERIGA
  2246.  Else 
  2247.   If T0GLILARIGA>0
  2248.    Proc T0GLILARIGA
  2249.    T0GLILARIGA=0
  2250.    DURATADELLARIGA=-1
  2251.   End If 
  2252.  End If 
  2253.  Bob Update 
  2254. End Proc
  2255. Procedure MOSTRALEPALLINERIMASTE
  2256.  ' Show the remained balls
  2257.  PALLINERIMASTE=PALLINE-1
  2258.  If PALLINERIMASTE>-1
  2259.   CIFRA=PALLINERIMASTE/100 mod 10
  2260.   Paste Bob 273,11,53+CIFRA
  2261.   CIFRA=PALLINERIMASTE/10 mod 10
  2262.   Paste Bob 289,11,53+CIFRA
  2263.   CIFRA=PALLINERIMASTE mod 10
  2264.   Paste Bob 305,11,53+CIFRA
  2265.  End If 
  2266. End Proc
  2267. Procedure _PAPEROALIENOINCAMPO
  2268.  ' Manage the alien duck
  2269.  If _PAPEROALIENO=0
  2270.   XPAPEROALIENO=Rnd(XFINALERIGA) : YPAPEROALIENO=-20
  2271.   GRADIPAPEROALIENO=45 : _PAPEROALIENO=1
  2272.  Else 
  2273.   If RITARDOPAPERO=0
  2274.    Add IMMAGINEPAPEROALIENO,1,0 To IMMAGINIPAPERO-1
  2275.    Inc YPAPEROALIENO
  2276.   End If 
  2277.   If _PAPEROINCAMPO=FALSO
  2278.    Add RITARDOPAPERO,1,0 To 12
  2279.   End If 
  2280.   Add GRADIPAPEROALIENO,_PAPEROALIENO
  2281.   If GRADIPAPEROALIENO=90
  2282.    GUANOINCAMPO=VERO
  2283.   Else If _PAPEROALIENO=1 and GRADIPAPEROALIENO=135
  2284.    _PAPEROALIENO=-1
  2285.   Else If _PAPEROALIENO=-1 and GRADIPAPEROALIENO=45
  2286.    _PAPEROALIENO=1
  2287.   End If 
  2288.   XMOVIMENTOPAPEROALIENO=Cos(GRADIPAPEROALIENO)*80
  2289.   YMOVIMENTOPAPEROALIENO=Sin(GRADIPAPEROALIENO)*80-50
  2290.   Bob OGGETTOPAPEROALIENO,XPAPEROALIENO+XMOVIMENTOPAPEROALIENO,YPAPEROALIENO+YMOVIMENTOPAPEROALIENO,IMMAGINEPAPEROALIENO(IMMAGINEPAPEROALIENO)
  2291.   Proc ILPAPEROALIENOESTATOCOLPITO
  2292.   Proc ILPAPEROALIENOEUSCITODALCAMPODIGIOCO
  2293.  End If 
  2294. End Proc
  2295. Procedure _PAPEROINCAMPO
  2296.  ' Manage the duck
  2297.  Bob OGGETTOPAPERO,XPAPERO,YPAPERO,IMMAGINEPAPERO(IMMAGINEPAPERO)
  2298.  If RITARDOPAPERO=0
  2299.   Add IMMAGINEPAPERO,1,0 To IMMAGINIPAPERO-1
  2300.  End If 
  2301.  Add RITARDOPAPERO,1,0 To 12
  2302.  If MATTONCINODATROVAREPERILPAPERO<247
  2303.   If MATTONCINO(MATTONCINODATROVAREPERILPAPERO)>0
  2304.    XMATTONCINOPERILPAPERO=X0ZONA(MATTONCINODATROVAREPERILPAPERO)-XPAPERO
  2305.    YMATTONCINOPERILPAPERO=Y0ZONA(MATTONCINODATROVAREPERILPAPERO)-YPAPERO
  2306.    If Abs(XMATTONCINOPERILPAPERO)+Abs(YMATTONCINOPERILPAPERO)<DISTANZADELMATTONCINOPIUVICINOALPAPERO
  2307.     DISTANZADELMATTONCINOPIUVICINOALPAPERO=Abs(XMATTONCINOPERILPAPERO)+Abs(YMATTONCINOPERILPAPERO)
  2308.     MATTONCINOPERILPAPERO=MATTONCINODATROVAREPERILPAPERO
  2309.    End If 
  2310.   End If 
  2311.   Add MATTONCINODATROVAREPERILPAPERO,1,0 To 247
  2312.  Else 
  2313.   DISTANZADELMATTONCINOPIUVICINOALPAPERO=1000
  2314.   XDISTANZADELPAPERODALMATTONCINOPIUVICINO=X0ZONA(MATTONCINOPERILPAPERO)+10-XPAPERO
  2315.   If XDISTANZADELPAPERODALMATTONCINOPIUVICINO>0
  2316.    Inc XPAPERO
  2317.   Else If XDISTANZADELPAPERODALMATTONCINOPIUVICINO<0
  2318.    Dec XPAPERO
  2319.   End If 
  2320.   YDISTANZADELPAPERODALMATTONCINOPIUVICINO=Y0ZONA(MATTONCINOPERILPAPERO)+5-YPAPERO
  2321.   If YDISTANZADELPAPERODALMATTONCINOPIUVICINO>0
  2322.    Inc YPAPERO
  2323.   Else If YDISTANZADELPAPERODALMATTONCINOPIUVICINO<0
  2324.    Dec YPAPERO
  2325.   End If 
  2326.   If XDISTANZADELPAPERODALMATTONCINOPIUVICINO=0 and YDISTANZADELPAPERODALMATTONCINOPIUVICINO=0
  2327.    If MATTONCINO(MATTONCINOPERILPAPERO)>0
  2328.     X0MATTONCINO=X0ZONA(MATTONCINOPERILPAPERO)
  2329.     Y0MATTONCINO=Y0ZONA(MATTONCINOPERILPAPERO)
  2330.     X1MATTONCINO=X0MATTONCINO+19
  2331.     Y1MATTONCINO=Y0MATTONCINO+9
  2332.     Proc CANCELLAILPAPERO
  2333.     Ink 0 : Bar X0MATTONCINO,Y0MATTONCINO To X1MATTONCINO,Y1MATTONCINO
  2334.     Dec MATTONCINI : Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
  2335.     Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINOPERILPAPERO,Rnd(9)]
  2336.     MATTONCINO(MATTONCINOPERILPAPERO)=0
  2337.    Else 
  2338.     MATTONCINODATROVAREPERILPAPERO=0
  2339.    End If 
  2340.   End If 
  2341.  End If 
  2342. End Proc
  2343. Procedure RIDISEGNODELMATTONCINO[MATTONCINO,DURATADELRIDISEGNODELMATTONCINO]
  2344.  ' Redraw the hitted bricks 
  2345.  For MATTONCINODARIDISEGNARE=0 To MASSIMOMATTONCINIDARIDISEGNARE-1
  2346.   If MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=MATTONCINO
  2347.    MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=MATTONCINO
  2348.    DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=DURATADELRIDISEGNODELMATTONCINO
  2349.   Else If DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=0
  2350.    MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=MATTONCINO
  2351.    DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=DURATADELRIDISEGNODELMATTONCINO
  2352.    Pop Proc
  2353.   End If 
  2354.  Next MATTONCINODARIDISEGNARE
  2355. End Proc
  2356. Procedure RIMETTILOSFONDO
  2357.  ' Redraw the screen
  2358.  Put Block 1
  2359. End Proc
  2360. Procedure RUBAPALLINAINCAMPO
  2361.  If PALLINASCELTADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
  2362.   PALLINA=Rnd(MASSIMOPALLINEINCAMPO-1)
  2363.   If PALLINA(PALLINA)=VERO
  2364.    PALLINASCELTADALRUBAPALLINA=PALLINA
  2365.    YRUBAPALLINA=0
  2366.    If SUONICARICATI=VERO
  2367.     Sam Play 13 : Proc VOCESEGUENTE
  2368.    Else 
  2369.     Bell 4
  2370.    End If 
  2371.   End If 
  2372.  Else 
  2373.   Bob OGGETTORUBAPALLINA,XRUBAPALLINA,YRUBAPALLINA,IMMAGINERUBAPALLINA(IMMAGINERUBAPALLINA)
  2374.   If PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
  2375.    If PALLINA(PALLINASCELTADALRUBAPALLINA)=VERO
  2376.     XPALLINA=Int(XPALLINA#(PALLINASCELTADALRUBAPALLINA))
  2377.     YPALLINA=Int(YPALLINA#(PALLINASCELTADALRUBAPALLINA))
  2378.     XRUBAPALLINA=XPALLINA
  2379.     If YRUBAPALLINA>YPALLINA
  2380.      Dec YRUBAPALLINA
  2381.     Else If YRUBAPALLINA<YPALLINA
  2382.      Inc YRUBAPALLINA
  2383.     Else 
  2384.      PALLINAPRESADALRUBAPALLINA=PALLINASCELTADALRUBAPALLINA
  2385.      PALLINA(PALLINAPRESADALRUBAPALLINA)=FALSO
  2386.     End If 
  2387.    Else 
  2388.     PALLINASCELTADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
  2389.     PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
  2390.    End If 
  2391.   Else 
  2392.    Bob OGGETTOPALLINA+PALLINAPRESADALRUBAPALLINA,XRUBAPALLINA,YRUBAPALLINA,IMMAGINEPALLINA
  2393.    Add XRUBAPALLINA,Rnd(6)-3
  2394.    Proc LIMITI[XRUBAPALLINA,11,XFINALERIGA-11] : XRUBAPALLINA=Param
  2395.    Dec YRUBAPALLINA
  2396.    If RITARDODELLARIPETIZIONEDELSUONODELLAPALLINARUBATA=0
  2397.     If SUONICARICATI=VERO
  2398.      Sam Play 14 : Proc VOCESEGUENTE
  2399.     Else 
  2400.      Bell 4
  2401.     End If 
  2402.    End If 
  2403.    Add RITARDODELLARIPETIZIONEDELSUONODELLAPALLINARUBATA,1,0 To 49
  2404.    Proc ILRUBAPALLINAEUSCITODALCAMPODIGIOCO
  2405.   End If 
  2406.   Proc ILRUBAPALLINAESTATOCOLPITO
  2407.  End If 
  2408. End Proc
  2409. Procedure SALVAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  2410.  ' Save the top hundred scores
  2411.  If Exist(PUNTEGGI$) Then Kill PUNTEGGI$
  2412.  Open Out 1,PUNTEGGI$
  2413.  For POSIZIONI=0 To 99
  2414.   If Val(PUNTEGGIODELGIOCATORE$(POSIZIONI))>0
  2415.    Print #1,NOMEDELGIOCATORE$(POSIZIONI)
  2416.    Print #1,PUNTEGGIODELGIOCATORE$(POSIZIONI)
  2417.    Print #1,LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONI)
  2418.   End If 
  2419.  Next POSIZIONI
  2420.  Close 1
  2421. End Proc
  2422. Procedure TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTO$,C0LORETESTOPRIMALINEA,C0LORETESTOSECONDALINEA,C0LOREBORDO,TEMP0]
  2423.  ' Manage the texts 
  2424.  If TESTO$="" Then Get Block 1,0,0,Screen Width,Screen Height
  2425.  ALTEZZALINEA=ALTEZZAFONT+3
  2426.  LINEE=1
  2427.  POSIZIONEPAROLA=1
  2428.  Repeat 
  2429.   ACAPO=Instr(TESTO$,Chr$(10),POSIZIONEPAROLA)
  2430.   If ACAPO>0 Then Inc LINEE : POSIZIONEPAROLA=ACAPO+1
  2431.  Until ACAPO=0
  2432.  If LINEE=1
  2433.   C0LORETESTO=C0LORETESTOPRIMALINEA
  2434.   XINIZIOTESTO=(Screen Width-Text Length(TESTO$))/2
  2435.   YINIZIOTESTO=(Screen Height-(ALTEZZALINEA))/2+Text Base
  2436.   Proc RIMETTILOSFONDO
  2437.   Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO,TESTO$,C0LORETESTO,C0LOREBORDO]
  2438.   Proc _ASPETTA[TEMP0]
  2439.   If TASTO=27
  2440.    Pop Proc
  2441.   End If 
  2442.  Else 
  2443.   Dim TESTO$(LINEE-1)
  2444.   POSIZIONEPAROLA=1
  2445.   For LINEA=0 To LINEE-1
  2446.    ACAPO=Instr(TESTO$,Chr$(10),POSIZIONEPAROLA)
  2447.    If ACAPO>0
  2448.     TESTO$(LINEA)=Mid$(TESTO$,POSIZIONEPAROLA,ACAPO-POSIZIONEPAROLA)
  2449.     POSIZIONEPAROLA=ACAPO+1
  2450.    Else 
  2451.     TESTO$(LINEA)=Right$(TESTO$,Len(TESTO$)-POSIZIONEPAROLA+1)
  2452.    End If 
  2453.   Next LINEA
  2454.   ALTEZZATESTO=ALTEZZALINEA*LINEE
  2455.   If ALTEZZATESTO<Screen Height
  2456.    ILTESTOSTATUTTONELLOSCHERMO=VERO
  2457.   Else 
  2458.    For LINEA=LINEE To 2 Step -1
  2459.     ALTEZZATESTO=ALTEZZALINEA*LINEA
  2460.     If ALTEZZATESTO<Screen Height
  2461.      NUMEROMASSIMODILINEENELLOSCHERMO=LINEA
  2462.      Exit 
  2463.     End If 
  2464.    Next LINEA
  2465.   End If 
  2466.   If ILTESTOSTATUTTONELLOSCHERMO=VERO
  2467.    Proc RIMETTILOSFONDO
  2468.    YINIZIOTESTO=(Screen Height-ALTEZZATESTO)/2+Text Base
  2469.    For LINEA=0 To LINEE-1
  2470.     If LINEA mod 2=0
  2471.      C0LORETESTO=C0LORETESTOPRIMALINEA
  2472.     Else 
  2473.      C0LORETESTO=C0LORETESTOSECONDALINEA
  2474.     End If 
  2475.     XINIZIOTESTO=(Screen Width-Text Length(TESTO$(LINEA)))/2
  2476.     Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO+ALTEZZALINEA*LINEA,TESTO$(LINEA),C0LORETESTO,C0LOREBORDO]
  2477.    Next LINEA
  2478.    Proc _ASPETTA[TEMP0]
  2479.    If TASTO=27
  2480.     Pop Proc
  2481.    End If 
  2482.   Else 
  2483.    Proc RIMETTILOSFONDO
  2484.    YINIZIOTESTO=(Screen Height-ALTEZZATESTO)/2+Text Base
  2485.    For LINEA=0 To NUMEROMASSIMODILINEENELLOSCHERMO-1
  2486.     If(LINEA) mod 2=0
  2487.      C0LORETESTO=C0LORETESTOPRIMALINEA
  2488.     Else 
  2489.      C0LORETESTO=C0LORETESTOSECONDALINEA
  2490.     End If 
  2491.     XINIZIOTESTO=(Screen Width-Text Length(TESTO$(LINEA)))/2
  2492.     Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO+ALTEZZALINEA*LINEA,TESTO$(LINEA),C0LORETESTO,C0LOREBORDO]
  2493.    Next LINEA
  2494.    Proc _ASPETTA[TEMP0*NUMEROMASSIMODILINEENELLOSCHERMO]
  2495.    If TASTO=27
  2496.     Pop Proc
  2497.    End If 
  2498.    For LINEA=1 To LINEE-NUMEROMASSIMODILINEENELLOSCHERMO
  2499.     Proc RIMETTILOSFONDO
  2500.     For LINEANELLOSCHERMO=0 To NUMEROMASSIMODILINEENELLOSCHERMO-1
  2501.      If(LINEA+LINEANELLOSCHERMO) mod 2=0
  2502.       C0LORETESTO=C0LORETESTOPRIMALINEA
  2503.      Else 
  2504.       C0LORETESTO=C0LORETESTOSECONDALINEA
  2505.      End If 
  2506.      XINIZIOTESTO=(Screen Width-Text Length(TESTO$(LINEANELLOSCHERMO+LINEA)))/2
  2507.      Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO+ALTEZZALINEA*LINEANELLOSCHERMO,TESTO$(LINEANELLOSCHERMO+LINEA),C0LORETESTO,C0LOREBORDO]
  2508.     Next LINEANELLOSCHERMO
  2509.     Proc _ASPETTA[TEMP0]
  2510.     If TASTO=27
  2511.      Pop Proc
  2512.     End If 
  2513.    Next LINEA
  2514.   End If 
  2515.  End If 
  2516. End Proc
  2517. Procedure T0GLILARCOBALENO
  2518.  ' Fade out the rainbow 
  2519.  For LINEADELLARCOBALENO=271 To 271-255 Step -1
  2520.   Rainbow 0,257,0,LINEADELLARCOBALENO
  2521.   Wait Vbl 
  2522.  Next LINEADELLARCOBALENO
  2523. End Proc
  2524. Procedure T0GLILARIGA
  2525.  ' Turn off the row 
  2526.  Bob Off OGGETTORIGA
  2527.  Bob Update 
  2528. End Proc
  2529. Procedure T0GLIILLASER
  2530.  ' Turn off the laser beam
  2531.  Bob Off OGGETTOLASER
  2532.  Bob Update 
  2533. End Proc
  2534. Procedure T0GLIILPANNELLO
  2535.  ' Fade out the panel 
  2536.  Ink 0
  2537.  For LINEAPANNELLO=255 To 0 Step -1
  2538.   Draw XPANNELLO,LINEAPANNELLO To XPANNELLO+LARGHEZZAPANNELLO-1,LINEAPANNELLO
  2539.   Wait Vbl 
  2540.  Next LINEAPANNELLO
  2541. End Proc
  2542. Procedure T0GLIIMATTONCINI
  2543.  ' Fade out the bricks
  2544.  Ink 0
  2545.  For MATTONCINO=246 To 0 Step -1
  2546.   If MATTONCINO(MATTONCINO)>0
  2547.    Bar X0ZONA(MATTONCINO),Y0ZONA(MATTONCINO) To X0ZONA(MATTONCINO)+19,Y0ZONA(MATTONCINO)+9
  2548.    Wait Vbl 
  2549.   End If 
  2550.  Next MATTONCINO
  2551. End Proc
  2552. Procedure TROVAILFONTDATA70
  2553.  ' Look for the Data70 font 
  2554.  TESTOFONTEDICARATTERE$="I am looking for the Data70 font..."+Chr$(10)
  2555.  TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"...in your FONTS: drawer."+Chr$(10)
  2556.  TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"Wait for a moment, please..."
  2557.  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERE$,17,17,19,-1]
  2558.  Get Disc Fonts 
  2559.  For FONTEDICARATTERE=1 To 65535
  2560.   FONTEDICARATTERE$=Left$(Font$(FONTEDICARATTERE),30)-" "
  2561.   If FONTEDICARATTERE$="Data70.font" Then Exit 
  2562.  Next FONTEDICARATTERE
  2563.  If FONTEDICARATTERE<65536
  2564.   Set Font FONTEDICARATTERE
  2565.   ALTEZZAFONT=Val(Mid$(Font$(FONTEDICARATTERE),31,2)-" ")
  2566.   TESTOFONTEDICARATTERE$="The font I am using is the Data70 font! :)"+Chr$(10)
  2567.   TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"This font will be used for the game."+Chr$(10)
  2568.   TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"Press a (mouse) key to continue..."
  2569.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERE$,17,17,19,250]
  2570.  Else 
  2571.   TESTOFONTEDICARATTERE$="The font I am using is the Topaz font! :("+Chr$(10)
  2572.   TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"This font will be used for the game."+Chr$(10)
  2573.   TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"Press a (mouse) key to continue..."
  2574.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERE$,18,18,19,250]
  2575.  End If 
  2576.  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  2577. End Proc
  2578. Procedure VOCESEGUENTE
  2579.  ' Select the next audio voice for the next sound 
  2580.  Add VOCE,VOCE : If VOCE=16 Then VOCE=1
  2581. End Proc
  2582.